是否有一種獨特的方法來確定一個變量值是否爲 一個數字,因爲這些值也可以用科學計數法表示(例如5.814e-10)?Perl,如何確定一個變量值是否是一個數字?
回答
核心模塊Scalar::Util
導出looks_like_number()
,它可以訪問底層的Perl API。如果perl的認爲EXPR
是一個數字
looks_like_number EXPR
返回true。
謝謝!它的效果很好 – Gordon 2011-03-11 19:16:06
來自perlfaq4:How do I determine whether a scalar is a number/whole/integer/float?
if (/\D/) { print "has nondigits\n" }
if (/^\d+$/) { print "is a whole number\n" }
if (/^-?\d+$/) { print "is an integer\n" }
if (/^[+-]?\d+$/) { print "is a +/- integer\n" }
if (/^-?\d+\.?\d*$/) { print "is a real number\n" }
if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { print "is a decimal number\n" }
if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
{ print "a C float\n" }
還有一些常用的任務模塊。
Scalar::Util
(以5.8分佈)提供對perl的內部函數looks_like_number
的訪問,以確定變量是否看起來像一個數字。
Data::Types
導出使用上述和其他正則表達式驗證數據類型的函數。
第三,有Regexp::Common
它有正則表達式來匹配各種類型的數字。
這三個模塊都可以從CPAN
也有String::Numeric和Regexp::Common::number ..看起來得心應手。
字符串:: Nummeric也有一個"a comparison with Scalar::Util::looks_like_number()"
從一個答案適應於How do I tell if a variable has a numeric value in Perl? -
for my $testable (qw(1 5.25 0.001 1.3e8 foo bar 1dd 0))
{
printf("%10s %s a number\n",
$testable,
isa_number($testable) ? "is" : "isn't")
}
sub isa_number {
use warnings FATAL => qw/numeric/;
my $arg = shift;
return unless defined $arg;
eval { $arg + 0; 1 };
}
你的'isa_number'認爲''0''不是一個數字。 – 2011-03-11 21:17:59
@ Ven'Tatsu:當然,謝謝。調整。 – Ashley 2011-03-11 21:40:24
- 1. php is_function(),以確定一個變量是否是一個函數
- 2. 如何確定一個字符串是否是一個有效的變量名?
- 3. 如何確定一個變量是否是最大值的指數?
- 4. C#如何確定一個數字是否是另一個數字的倍數?
- 5. 確定NSString的第一個字符是否是一個數字
- 6. 如何檢查一個變量是否是一個整數?
- 7. 如何確定一個字符串是否是ksh的數字
- 8. 如何確定字段值是否是一個對象?
- 9. Perl:查找一個變量的值是否與數組匹配
- 10. 如何確定一個變量是否屬於一個陣列或另一個在Perl
- 11. 如何確定一個變量的值是否延伸到一行或多行?
- 12. 確定Bash變量是否爲多個值之一
- 13. 如何確定一個數字以前是否在變量中使用過?
- 14. 如何檢查一個變量是否爲空並且是一個數字?
- 15. Bash確定變量名是否包含一個字符串
- 16. 如何檢查是否一個變量是JavaScript的一個blob
- 17. 檢查是否變量是一定值
- 18. 確定是否Python變量是一個內置式
- 19. C++如何確定char是否是一個字中的第一個字符
- 20. 如何確定一個url是否是一個圖像?
- 21. 如何確定一個點是否是一個四邊形
- 22. 如何確定一個Perl模塊是否跨平臺?
- 23. Python:檢查一個變量是否是一個字典
- 24. 如何確定一個數字除以8是一個整數?
- 25. 確定是否一個字節[]是一個pdf文件
- 26. 是否有函數來測試一個字符串變量是否是一個數值?
- 27. 如何確定一個對象是否在Perl中實現了一個方法?
- 28. 如何確定一個十六進制數是否是負數?
- 29. 如何聲明一個特定的變量是一個數組?
- 30. 檢查一個變量是否是一個CSV字符串中的值
「是有獨特的方法」 - 不,這是Perl的,TMTOWTDI! :) – Quentin 2011-03-11 13:36:57
可能的重複[如何判斷一個變量是否在Perl中具有數值?](http://stackoverflow.com/questions/12647/how-do-i-tell-if-a-variable-has -a-numeric-value-in-perl) – daxim 2011-03-11 13:41:32