Re: [問題] 如何取出字串中的數字並加以運算
※ 引述《cutecpu (可愛中央處理器)》之銘言:
: ※ 引述《saka12 (saka)》之銘言:
: : 大家好,我式perl的新手
: : 請問如果從<STDIN>輸入任意數字或字母,
: : 在不使用"陣列"跟"正規表示法"的前提下,
: : 怎麼只取數字,並運行基本的運算
: : 例如:
: : 使用者輸入: 1 12 3 a 24 e 5
: : 螢幕顯示: 1+12+3+24+5=45
: : 我本來用substr來取單一字元,可是這樣12會被拆成1跟2,
: : 我卡這裡很久了,實在想不出來,所以請大家幫幫忙
: : 謝謝D
: 以下是土法煉鋼法,沒有用到陣列跟正規表示式唷:
: #!/usr/bin/perl -w
: $partialSum = $sum = 0;
: $expr = <STDIN>;
: for(split('',$expr)){
: if($_ ge '0' and $_ le '9'){
: $partialSum = 10 * $partialSum + $_;
: $digit = 1;
: }
: elsif($digit){
: $exp .= "$partialSum+";
: $sum += $partialSum;
: $partialSum = $digit = 0;
: }
: }
: chop($exp);
: print "$exp=$sum\n";
首先先謝謝大家的幫忙,小弟我致上萬分感激!
其實我後來也有想過要用10*1+2的方法來解決12會被拆成1跟2的問題,
無奈小弟我實在太弱,寫不出來orz
我還有一個問題,如果限制使用者只能輸入1~30的數字,之後的數字將不被運算的話,
該怎麼做了?
如果使用者只輸入字母,那我要如何print出"無效運算"呢?
例如:
1 2 12 a 15 b 31 -> 1+2+12+15=30
a b c d -> 無效運算
先再次謝謝大家的幫忙!
我會先用2-3天的時間來想想的,再回頭看看大家的idea的
(沒辦法,我是新手,要多翻書,才得靈感)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.130.53.186
→
01/30 16:08, , 1F
01/30 16:08, 1F
推
01/30 19:24, , 2F
01/30 19:24, 2F
推
02/01 16:05, , 3F
02/01 16:05, 3F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章