【问题标题】:How to split Java String using REGEX into array如何使用 REGEX 将 Java 字符串拆分为数组
【发布时间】:2012-01-18 04:06:40
【问题描述】:

我有一个Java字符串如下:

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

我想使用正则表达式将其拆分为字符串数组:

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

任何人都可以帮助编写 Java 代码吗?

【问题讨论】:

  • 你试过什么?你看过 Java API 中的 String[] split(String regex) 方法吗?
  • 您不需要正则表达式。只需将其拆分为|,然后以 4 人为一组。

标签: java regex string


【解决方案1】:

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

  1. 遇到字母时打断输入字符串
  2. 用管道分解每个子串

我不是正则表达式专家,但我认为它不可能是单一模式。您需要两个和一个子字符串循环。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      使用String.split() 方法。

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

      【讨论】:

        【解决方案4】:

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

        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];
        }
        

        【讨论】:

        • input.split("|"); 不会按预期工作,因为这是一个正则表达式 OR 符号;应该改用\\|
        • split() 模式应该是一个正则表达式,而| 是一个正则表达式元字符,所以你需要转义它:"\\|"。另外,向列表添加元素的方法是add(),而不是put()
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 2023-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多