2013-07-27 110 views
4

我有一個這樣的字符串:如何找到一個字符串包含數字後跟一個特定的字符串

String str = "Friday 1st August 2013" 

我需要檢查:如果字符串包含「任意數量」後面的「ST」的字符串,打印「是」,否則打印「否」。

我試過了:if (str.matches(".*\\dst"))if (str.matches(".*\\d.st"))但它不起作用。

任何幫助?

回答

9

用途:

if (str.matches(".*\\dst.*")) 

String#matches()從字符串結束的開始正則表達式模式匹配。隱含的錨點^$是隱含的。所以,你應該使用匹配完整字符串的模式。

或者,使用PatternMatcherMatcher#find()方法,在一個字符串中的任何地方,以搜索特定的圖案:

Matcher matcher = Pattern.compile("\\dst").matcher(str); 
if (matcher.find()) { 
    // ok 
} 
+0

+1但是爲什麼提到Pattern/find?這不是必要的,它更多的代碼和更少的可讀性。你的解釋爲什麼他的比賽沒有工作,以及如何解決這個問題纔是真正的,最好的答案。 – Bohemian

+0

@波希米亞。這將增加OP的知識:)我不會做任何傷害。 ;) –

1

正則表達式可用於匹配這樣的模式。例如

String str = "Friday 1st August 2013" 
    Pattern pattern = Pattern.compile("[0-9]+st"); 
    Matcher matcher = pattern.matcher(str); 
    if(mathcer.find()) 
     //yes 
    else 
    //no 
1

你可以使用這個表達式:

.*?(\\d+)st.* 

?*後是必要的,因爲*是 「貪婪」(它會匹配整個字符串)。 *?做了一個「非貪婪的」比賽。此外,該號碼可以有多個單個數字(例如「15st」)。

相關問題