我有一个包含数字和文字的字符串。 (数字也有十进制值。)我想检查包含仅数字的字符串和十进制值。
这是字符串:
String testValue = "One Time Password(OTP) for Debit Card ending 1234 is 359573. Pls use this OTP at HDFC Bank ATM(Language selection screen) to create your ATM PIN before 27Jan15"
我正在提取值以仅获取另一段代码中的数字。我存储在testValue中。有时我得到如上所述的完整信息,我试图找到testValue只有数字......所以 我尝试了以下方法:
if (Pattern.matches("[a-zA-Z]+", testValue ) == false && testValue.length() > 2)
{
Log.e("True","Only numbers);
}
这是打印True。
if (testValue.contains("[0-9]+"))
{
Log.e("True","Only numbers);
}
这也打印为True。
if (testValue.matches(".*\\d+.*")
{
Log.e("True","Only numbers);
}
这也打印为True。
以上所有条件都是真的我不知道为什么它包含数字和字母?
如何检查testValue是否只有数字(也是小数)
谢谢!
答案 0 :(得分:3)
Pattern.matches("[a-zA-Z]+", testValue ) == false
不是全部字母,则 testValue
将为真。
testValue.contains("[0-9]+")
中至少有一位数字,则 testValue
会返回true。
testValue.matches(".*\\d+.*")
中至少有一位数字, testValue
也会返回true。
要仅测试数字,请使用中间数字,但使用matches()
:
testValue.matches("[0-9]+")
如果您还想允许带有一个或多个数字的可选.
,您可以使用:
testValue.matches("[0-9]+(\\.[0-9]+)?")
答案 1 :(得分:0)
String testValue = "One Time Password(OTP) for Debit Card ending 1234 is 359573. Pls use this OTP at HDFC Bank ATM(Language selection screen) to create your ATM PIN before 27Jan15";
if (testValue.contains("[a-zA-Z]+")&&(testValue.contains(".")))
{
System.out.println("True Only numbers");
}
else
System.out.println("false");
}