2016-09-30 19 views
1

我正在写一个算法,我需要检查,如果字符串包含只有一个位数(不超过)。目前我有:使用正则表达式来检查,如果字符串只包含一个数字

if(current_Operation.matches("\\d")){ 
... 
} 

有没有更好的方法去做到这一点?谢谢。

+0

什么是错的这种方式? –

+1

模式:'^ \ D * \ d \ D * $'。 – Jan

+0

看来我没有用这种方式得到正确的结果。如果字符串包含任何地方,请让我仔细检查 – pmcg521

回答

5

您可以使用:

^\\D*\\d\\D*$ 
# match beginning of the line 
# non digits - \D* 
# one digit - \d 
# non digits - \D* 
# end of the line $ 

a demo on regex101.com(为了清楚添加新行)。

+1

是的,谢谢!经过测试,完美的作品。 – pmcg521

+0

@Jan在相同的正则表达式,我们怎么能检查是否是数字赌注只有0-6 –

-2

使用正则表达式

/^\d$/ 

这将保证整个字符串包含一个单一的数字。 ^匹配行的开头,并且$匹配行的末尾。

+0

他要求检查,如果字符串包含一个数字,不只是一个数字,但它应该只包含恰好有一个数字 – WebFreak001

+0

@ WebFreak001是的,你是正确的,字符串包含括号还可以,但我检查,如果它仅包含一个数字。 – pmcg521

1

如果你想象不使用正则表达式:

int numDigits = 0; 
for (int i = 0; i < current_Operation.length() && numDigits < 2; ++i) { 
    if (Character.isDigit(currentOperation.charAt(i))) { 
    ++numDigits; 
    } 
} 
return numDigits == 1; 
相关问题