我有大字符串,如:
String = "ABC114.553111.325785.658EFG114.256114.589115.898";
我想实现:
String1 = "ABC";
String2 = "114.553";
String3 = "111.325";
String4 = "785.658";
有时它不是三位数,而是点数和四位数。但总是在数字之前有三个字母。
答案 0 :(得分:2)
您可以使用以下正则表达式:
([^\.]){3}(\....)?
这是一个程序......
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class C {
public static void main(String[] args) {
String a = "([^\\.]){3}(\\....)?";
String b = "ABC114.553111.325785.658EFG114.256114.589115.898";
Pattern pattern = Pattern.compile(a);
Matcher matcher = pattern.matcher(b);
while (matcher.find()) {
System.out.println("found: " + matcher.group(0));
}
}
}
输出
found: ABC
found: 114.553
found: 111.325
found: 785.658
found: EFG
found: 114.256
found: 114.589
found: 115.898
答案 1 :(得分:1)
String s = "ABC114.553111.325785.658EFG114.256114.589115.898";
Matcher prefixes = Pattern.compile("([A-Z]{3})").matcher(s);
for (String part : s.split("[A-Z]{3}")) {
if (part.equals("")) {
continue;
}
prefixes.find();
System.out.println(prefixes.group(0));
for (int i = 0; i < part.length(); i += 7) {
System.out.println(part.substring(i, i + 7));
}
}
输出:
ABC
114.553
111.325
785.658
EFG
114.256
114.589
115.898
答案 2 :(得分:0)
错误选项可以是将字符串0循环到n-4。并跟踪第(i + 3)个字符,如果是“。”,你知道在哪里分割 - 在“i”。
@Matt - 你丢失了字母“ABC”和“EFG”字符串,应该保留这些字母。