Java在自定义位置拆分字符串

时间:2014-02-13 15:15:00

标签: java string split

我有大字符串,如:

String = "ABC114.553111.325785.658EFG114.256114.589115.898";

我想实现:

String1 = "ABC";
String2 = "114.553";
String3 = "111.325";
String4 = "785.658";

有时它不是三位数,而是点数和四位数。但总是在数字之前有三个字母。

3 个答案:

答案 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”字符串,应该保留这些字母。