1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
修復(fù)當(dāng)前方法
您可以像這樣修復(fù)您的方法:
final Pattern p = Pattern.compile( "^(?:00(?:\\s+00)*\\s+)?(\\d{2})(.*?)(\\d{2})(?:\\s+00(?:\\s+00)*)?$" );
final Matcher m = p.matcher( "00 44 88 45 00 25 78 46 00 46 58 00" );
final String first = m.replaceAll( "$1" );
final String last = m.replaceAll( "$3" );
提取方法
或者,您可以在不替換的情況下提取值:
^(?:00(?:\s+00)*\s+)?(\d{2})|(\d{2})(?:\s+00(?:\s+00)*)?$
Java演示:
String s = "00 44 88 45 00 25 78 46 00 46 58 00";
Pattern pattern = Pattern.compile("^(?:00(?:\\s+00)*\\s+)?(\\d{2})|(\\d{2})(?:\\s+00(?:\\s+00)*)?$");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
? ? if (matcher.group(1) != null) {
? ? ? ? System.out.println(matcher.group(1));?
? ? }
? ? if (matcher.group(2) != null)? {
? ? ? ? System.out.println(matcher.group(2));
? ? }
}?
輸出:
44
58
使用過(guò)濾方法進(jìn)行拆分
此外,您可以簡(jiǎn)單地用空格拆分字符串,刪除所有00項(xiàng)目并獲取第一個(gè)和最后一個(gè)項(xiàng)目:
String s = "00 44 88 45 00 25 78 46 00 46 58 00";
List<String> result = Arrays.stream(s.split("\\s+"))
? ? ? ?.filter(i -> !i.equals("00"))
? ? ? ?.collect(Collectors.toList());
System.out.println(result.get(0));? ? ? ? ? ? ? ? // => 44
System.out.println(result.get(result.size()-1));? // => 58
添加回答
舉報(bào)