在Java / Android中仅使用Numbers检查字符串

时间:2015-06-24 10:35:15

标签: java android

我有一个包含数字和文字的字符串。 (数字也有十进制值。)我想检查包含数字的字符串和十进制值。

这是字符串:

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是否只有数字(也是小数)

谢谢!

2 个答案:

答案 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");

}