2014-10-29 121 views
2

这对熟悉正则表达式的人可能很清楚,但我不知道。检查字符串是否包含任何非数字字符 - 没有库 - Java

例(让我澄清:这是一个例子):

String onlynumbers = "1233444"; 
String numbersanddigits = "123344FF"; 

if (onlynumbers IS_ONLY_NUMBERS()) 
    return true; 

if (numbersanddigits IS_ONLY_NUMBERS()) 
    return false; 

建议?有没有办法在不导入库的情况下做类似的检查?

+3

'yourString.matches( “\\ d +”)'会做的伎俩。如果这是错误的,你的字符串中有非数字。 – fge 2014-10-29 20:08:53

回答

4

尝试使用String.matches("\\d+")。如果该语句返回false,则字符串中的字符不是数字。 \d表示该字符必须是数字,+表示每个字符必须是数字。

像这样:

String onlynumbers = "1233444"; 
String numbersanddigits = "123344FF"; 

System.out.println(onlynumbers.matches("\\d+")); // prints "true" 
System.out.println(numbersanddigits.matches("\\d+")); // prints "false" 
+1

最清晰的答案。你赢了。 – Jack 2014-10-29 20:29:42

+1

@JackScotti Stackoverflow是没有竞争...哦...等待:-) – dognose 2014-10-29 20:38:42

+0

我虽然'+'意味着匹配前面的令牌1次或更多次。 – Voicu 2014-10-29 20:57:04

2

你可以尝试:

if (onlynumbers.matches("[0-9]+") 
    return true; 

if (numbersanddigits.matches("[0-9]+") 
    return false; 

此外,作为快捷方式,你可以使用\\d+而不是[0-9]+。选择哪一个只是一个选择问题。

+1

正如评论,你也可以使用快捷方式'\ d' – 2014-10-29 20:27:37

相关问题