如何使用REGEX将Java String拆分为数组

时间:2012-01-18 04:06:41

标签: java regex string

我有一个Java字符串如下:

C | 51199120 | 36937872 | 14261248 | 0.73 | I | 102398308 | 6240560 | 96157748 | 0.07 | J | 90598564 | 1920184 | 8867 8380 | 0.0

我希望使用正则表达式将其拆分为String数组:

Array1 = C,51199120,36937872,14261248,0.73
Array2 =I,102398308,6240560,96157748,0.07
Array3 =J,90598564,1920184,88678380,0.03

任何人都可以帮助使用Java代码吗?

4 个答案:

答案 0 :(得分:0)

我不认为这很简单。你有两件事需要做:

  1. 遇到字母时分解输入字符串
  2. 通过管道分解每个子字符串
  3. 我不是正则表达式专家,但我不认为它可以是单一模式。你需要两个并在子串上循环。

答案 1 :(得分:0)

您可以使用String.split("\\|")轻松地在子组件上拆分字符串,但正则表达式不会帮助您将它们分组到不同的数组中,也不会帮助您将子字符串转换为适当的类型。你需要一个单独的逻辑。

答案 2 :(得分:0)

使用String.split()方法。

 String []ar=str.split("(?=([A-Z]))");
 for(String s:ar)
   System.out.println(s.replace("|",","));

答案 3 :(得分:0)

更简单地分裂然后循环。
或多或少:

String input = ...
String[] splitted = input.split("|");
List<String[]> resultArrays = new ArrayList<String[]>();
String[] currentArray = null;
for (int i = 0; i < splitted.length; i++) {
    if (i % 5 == 0) {
        currentArray = new String[5];
        resultArrays.put(currentArray);
    }
    currentArray[i%5] = splitted[i];
}