是否有像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