作者windincloud (爱情已死枯如槁灰)
看板Perl
标题Re: [问题] 如何取出字串中的数字并加以运算
时间Wed Feb 1 11:33:32 2012
※ 引述《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
1F:→ windincloud:Hint:若3a24那个不想变成324的话 只需加if else & {} 02/01 11:43
2F:→ windincloud:就可以了~ 不需要在变动啥东西~ :) 02/01 11:43
3F:→ CindyLinz:接下来要出现 伪.组合语言 版的感觉 XD 02/01 16:32