2017-03-06 80 views
-1

我有這樣的句子:的Java:切一個號碼一個特定的單詞後,在一個句子

String str = "This is a sample 123 string 456. And continue 123..."; 
// OR 
String str = "This is another sample 123 and other words. And 123"; 
// I want => int result = 123; 

我怎麼能只砍123sample後?

+2

您可以使用正則表達式'「樣本。*(\\ d +)」'有匹配器。 –

+0

瀏覽正則表達式.https://docs.oracle.com/javase/tutorial/essential/regex/ – Akshay

+0

@PeterLawrey您的解決方案將返回'3',而不是您應該刪除'*''「樣本。 d +)「' –

回答

0

簡單的正則表達式示例。 (在真實的世界將與制衡不同的方式處理它。)

String regex = "(123)"; 
    String testName= "This is another sample 123 and other words. And 123"; 
    Pattern pattern = 
      Pattern.compile(regex); 
    Matcher matcher = 
      pattern.matcher(testName); 

    String res = null; 
    if (matcher.find()) { 
     res = matcher.group(1); 
    } 

    System.out.println(res); //prints 123 
+0

它實際上將運行一次並返回第一次出現123 – 7663233

0

您可以使用正則表達式,所以如果你看看你的電話號碼存在samplespace之間,所以你可以使用這個:

public static final String REGEX_START = Pattern.quote("sample "); 
public static final String REGEX_END = Pattern.quote(" "); 
public static final Pattern PATTERN = Pattern.compile(REGEX_START + "(.*?)" + REGEX_END); 

public static void main(String[] args) { 
    String input = "This is a sample 123 string 456. And continue 123..."; 
    List<String> keywords = new ArrayList<>(); 

    Matcher matcher = PATTERN.matcher(input); 

    // Check for matches 
    while (matcher.find()) { 
     keywords.add(matcher.group(1)); 
    } 

    keywords.forEach(System.out::println); 
} 

或者你可以使用@Peter Lawrey的解決方案只是刪除*

Pattern PATTERN = Pattern.compile("sample.(\\d+)"); 
Matcher matcher = PATTERN.matcher(input); 

// Check for matches 
while (matcher.find()) { 
    keywords.add(matcher.group(1)); 
} 
相關問題