簡體   English   中英

僅從字符串中提取數字

[英]Extract only the numbers from String

我需要一個給出以下字符串的正則表達式:“ 12.123.123 / 1234-11”,“ 12.123123123411”或“ 1123123 / 1234-11”。 我只能提取數字(12123123123411);

Pattern padrao = Pattern.compile("\d+");
Matcher matcher = padrao.matcher("12.123.123/1234-11");
while (matcher.find()) {
    System.out.println(matcher.group());
}
//output:12,123,123,1234,11,
//I need: 121231234123411

誰能幫我?

更好的方法是使用String#replaceAll(regex, replacement) replace String#replaceAll(regex, replacement)方法替換除數字以外的所有字符(如您所見,該方法使用正則表達式進行替換):

String str = "12.123.123/1234-11";
String digits = str.replaceAll("\\D", "");

\\\\D匹配非數字字符。 等效於[^0-9] 請注意,您需要在Java正則表達式引擎上轉義\\D


如果您有使用Matcher#group()方法的限制,那么每次找到數字時,您都必須構建一個StringBuilder實例並附加數字:

String str = "12.123.123/1234-11";
StringBuilder digits = new StringBuilder();

Matcher matcher = Pattern.compile("\\d+").matcher(str);

while (matcher.find()) {
    digits.append(matcher.group());
}

System.out.println(digits);

您可以通過replaceAll刪除所有非數字字符:

String out = string.replaceAll("\\D+", "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM