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

看板Perl作者 (愛情已死枯如槁灰)時間12年前 (2012/02/01 11:33), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串8/9 (看更多)
※ 引述《saka12 (saka)》之銘言: : 大家好,我式perl的新手 : 請問如果從<STDIN>輸入任意數字或字母, : 在不使用"陣列"跟"正規表示法"的前提下, : 怎麼只取數字,並運行基本的運算 : 例如: : 使用者輸入: 1 12 3 a 24 e 5 : 螢幕顯示: 1+12+3+24+5=45 : 我本來用substr來取單一字元,可是這樣12會被拆成1跟2, : 我卡這裡很久了,實在想不出來,所以請大家幫幫忙 : 謝謝D 手癢 就土法煉鋼一下 利用perl型態自行判定的特性寫出你要的東西 #!/usr/bin/perl -w my $expr = <STDIN>; my $digit = ""; my $sum = 0; for my $i(0..(length $expr)) { my $char = substr( $expr, $i, 1 ); if( (ord($char) >= 48) && (ord($char) <= 57) ) { $digit .= $char; } elsif( (ord($char) == 32) || (ord($char) == 10 ) ) { if( $digit ne "" ) { $sum += $digit; } $digit = ""; } } print $sum."\n"; 這程式有個ambiguous的地方 就是要是你輸入字串1 12 3 a 24 e 5 答案是45沒錯 但是要是輸入1 12 3a24 e 5, 就會變成 1+12+324+5 = 342 因為你沒說你這樣要怎去處理 所以就暫時先這樣~ 需要的話就拿去改一改囉~ :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.183.82

02/01 11:43, , 1F
Hint:若3a24那個不想變成324的話 只需加if else & {}
02/01 11:43, 1F

02/01 11:43, , 2F
就可以了~ 不需要在變動啥東西~ :)
02/01 11:43, 2F

02/01 16:32, , 3F
接下來要出現 偽.組合語言 版的感覺 XD
02/01 16:32, 3F
文章代碼(AID): #1FABAFaa (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 9 篇):
文章代碼(AID): #1FABAFaa (Perl)