2016-09-30 48 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; 
相關問題