是否有像int()
这样的函数可以将字符串转换为浮点值? 我目前使用下面的代码:如何将字符串转换为使用Perl的float?
$input=int(substr($line,1,index($line,",")-1));
我需要通过substr
返回飘起了字符串转换。
是否有像int()
这样的函数可以将字符串转换为浮点值? 我目前使用下面的代码:如何将字符串转换为使用Perl的float?
$input=int(substr($line,1,index($line,",")-1));
我需要通过substr
返回飘起了字符串转换。
只要使用它。在Perl中,看起来像一个数字的字符串是一个数字。现在
,如果你想使用它之前确认的事情是一个数字再有就是在Scalar::Util
个实用方法做的:根据您在离开样品的输入
use Scalar::Util qw/looks_like_number/;
$input=substr($line,1,index($line,",")-1);
if (looks_like_number($input)) {
$input += 1; # use it as a number!
}
意见,提取数的更强大的方法是:
$line =~ /([^\[\],]+)/; # <-- match anything not square brackets or commas
$input = $1; # <-- extract match
我不知道你的数据是什么样子,但你一定要明白,在第三个参数substr是一个长度,不一个位置,对吧?此外,第一个位置是0.我怀疑你没有得到你认为你得到的数据,并且它大多意外地起作用,因为你从字符串的开始处开始并且只关闭一个。
数据以“[”。“开头,所以我们从0开始,而不是1开始作为substr.Ofcourse的第二个参数,第三个必须是一个数字。代码中的什么让你认为我们忽略了? – fixxxer 2010-01-07 13:42:22
index()让我觉得你忽略了这一点,并且你没有提取Perl认为是一个数字的事实。向我们展示输入数据的完整示例,因此我们不必猜测。 – 2010-01-07 13:47:06
你可以举一个'$ line'如何生成的例子吗? – 2010-01-07 09:04:53
$行是从日志文件中读取的。打开(fHandle,“+ <”,$ path)或死掉“$!”; foreach $ line() \t \t {\t $ input = int(substr($ line,1,index($ line,“,”) - 1)); } 这是完整的代码。 –
fixxxer
2010-01-07 09:31:27
我们是否可以从您的文件中获取示例行,以便我们可以提出更好的方法来提取数字。 – slebetman 2010-01-07 09:41:26