Re: [問題] 如何取出字串中的數字並加以運算

看板Perl作者 (Cindy Wang)時間13年前 (2012/01/29 18:41), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串3/9 (看更多)
※ 引述《abliou (把青春freeze)》之銘言: : ※ 引述《saka12 (saka)》之銘言: : : 大家好,我式perl的新手 : : 請問如果從<STDIN>輸入任意數字或字母, : : 在不使用"陣列"跟"正規表示法"的前提下, : : 怎麼只取數字,並運行基本的運算 : : 例如: : : 使用者輸入: 1 12 3 a 24 e 5 : : 螢幕顯示: 1+12+3+24+5=45 : : 我本來用substr來取單一字元,可是這樣12會被拆成1跟2, : : 我卡這裡很久了,實在想不出來,所以請大家幫幫忙 : : 謝謝D : $in=<stdin> ; : chomp($in); : sub{ print join("+",@_ )."=". ${[map{$sum+=$_}@_]}[-1] } : ->(grep{/\d+/}split/\s/,$in); 一個以字串處理為主的解法: $expr = <STDIN>; chomp $expr; $expr =~ s/(?<=\d)\D+(?=\d)/+/g; $ans = eval $expr; print "$expr=$ans\n"; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.246.249

01/29 18:56, , 1F
用=~應該算用到"正規表示法"了吧
01/29 18:56, 1F

01/29 21:46, , 2F
這方法挺厲害的!!
01/29 21:46, 2F

01/29 23:18, , 3F
是正規表示法啊.. 反正就是字串處理嘛 ^^|
01/29 23:18, 3F

01/30 01:01, , 4F
喔~ print"\n",$a+=$_ for grep/\d+/,split/ +/,<STDIN>;
01/30 01:01, 4F

01/31 22:43, , 5F
print $_=join('+',grep(/^\d+$/,@ARGV)),"=",eval,"\n";
01/31 22:43, 5F
文章代碼(AID): #1F9I9t7P (Perl)
討論串 (同標題文章)
文章代碼(AID): #1F9I9t7P (Perl)