我有這樣的句子:的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;
我怎麼能只砍數123
的字sample
後?
我有這樣的句子:的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;
我怎麼能只砍數123
的字sample
後?
簡單的正則表達式示例。 (在真實的世界將與制衡不同的方式處理它。)
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
它實際上將運行一次並返回第一次出現123 – 7663233
您可以使用正則表達式,所以如果你看看你的電話號碼存在sample
和space
之間,所以你可以使用這個:
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));
}
您可以使用正則表達式'「樣本。*(\\ d +)」'有匹配器。 –
瀏覽正則表達式.https://docs.oracle.com/javase/tutorial/essential/regex/ – Akshay
@PeterLawrey您的解決方案將返回'3',而不是您應該刪除'*''「樣本。 d +)「' –