【问题标题】:Java split string on third commaJava 在第三个逗号上拆分字符串
【发布时间】:2011-11-25 21:37:21
【问题描述】:

我有一个字符串需要拆分为 2。我想通过在第三个逗号处拆分来做到这一点。

我该怎么做?

编辑

一个示例字符串是:

from:09/26/2011,type:all,to:09/26/2011,field1:emp_id,option1:=,text:1234

字符串将保持相同的格式 - 我想要字符串中字段之前的所有内容。

【问题讨论】:

    标签: java regex string split


    【解决方案1】:

    如果您只是对在第三个逗号的索引处拆分字符串感兴趣,我可能会这样做:

    String s = "from:09/26/2011,type:all,to:09/26/2011,field1:emp_id,option1:=,text:1234";
    
    int i = s.indexOf(',', 1 + s.indexOf(',', 1 + s.indexOf(',')));
    
    String firstPart = s.substring(0, i);
    String secondPart = s.substring(i+1);
    
    System.out.println(firstPart);
    System.out.println(secondPart);
    

    输出:

    from:09/26/2011,type:all,to:09/26/2011
    field1:emp_id,option1:=,text:1234
    

    相关问题:

    【讨论】:

    • 快速提问 - 如果我想每三个逗号获得一次,这可行吗?
    • Naah,那么您可能想要某种循环。看看我发布的相关问题。或者,您为什么不拆分"," 并将您想要组合在一起的部分连接在一起。
    【解决方案2】:

    一个简单的实现

    public static String[] split(String s)
    {
        int index = 0;
        for(int i = 0; i < 3; i++)
            index = s.indexOf(",", index+1);
    
        return new String[] {
                s.substring(0, index),
                s.substring(index+1)
        };
    }
    

    这不会进行边界检查,如果没有按预期给出输入,则会抛出各种可爱的异常。给定"ABCD,EFG,HIJK,LMNOP,QRSTU" 返回["ABCD,EFG,HIJK","LMNOP,QRSTU"]

    【讨论】:

      【解决方案3】:

      你可以使用这个正则表达式:

      ^([^,]*,[^,]*,[^,]*),(.*)$
      

      结果在两个捕获(1 和 2)中,不包括第三个逗号。

      【讨论】:

      • 刚刚返回了我的完整字符串。我已经用示例字符串编辑了上面的内容
      • @pm13,是的,它确实匹配完整的字符串,但捕获(如我所写)包含两个不同的部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2015-08-15
      • 2014-02-11
      • 2021-11-16
      • 2014-10-15
      • 1970-01-01
      相关资源
      最近更新 更多