【问题标题】:Splitting of String delimited by '[' and ']' [duplicate]拆分由'['和']'分隔的字符串[重复]
【发布时间】:2014-06-13 02:30:56
【问题描述】:

我有一些样本数据写入文件。数据格式如下 -

[Peter Jackson] [UK] [United Kingdom] [London]....

我必须提取由 '[' 和 ']' 分隔的信息。所以我发现了——

Peter Jackson  
UK  
United Kingdom  
London  
...
...

我对字符串拆分不太了解。我只知道当它们只被一个字符分隔时如何拆分字符串(例如 - string1-string2-string3-....)。

【问题讨论】:

    标签: java string parsing split


    【解决方案1】:

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

    \\[(.+?)\\]
    

    并且被捕获的组将拥有您的内容。

    很抱歉没有添加代码。我不懂java

    【讨论】:

    • 非常感谢。我会试试的
    • 在 Java 中是 string.split(regex)
    • @BrianJ:不,您必须使用匹配器来查找匹配项。
    【解决方案2】:

    尝试替换

        String str = "[Peter Jackson] [UK] [United Kingdom] [London]";
        str = str.replace("[", "");
        str = str.replace("]", "");
    

    然后你可以尝试拆分它。

    【讨论】:

    • 这删除(重要的!)分隔符!你不能再可靠地拆分剩余的字符串了。
    • 没错,没想到!所以你必须先拆分,然后再替换
    【解决方案3】:

    您应该为此使用正则表达式。

    Pattern p = Pattern.compile("\\[(.*?)\\]");
    Matcher results = p.matcher("[Peter Jackson] [UK] [United Kingdom] [London]....");
    
    while (results.find()) {
        System.out.println(results.group(1));
    }
    

    【讨论】:

      【解决方案4】:

      在“] [”上拆分应该对您进行排序,如下所示:

      \] \[
      

      Debuggex Demo

      在此之后,只需替换 '[' 和 ']' 并使用换行符加入。

      【讨论】:

        【解决方案5】:

        每个项目是否用空格分隔?如果是这样,你可以用“\] \[”分割然后替换所有左边的括号:

            String vals = "[Peter Jackson] [UK] [United Kingdom] [London]";
            String[] list = vals.split("\\] \\[");
            for(String str : list){
                str = str.replaceAll("\\[", "").replaceAll("\\]", "");
                System.out.println(str); 
            }
        

        或者如果你想避免循环,你可以使用一个子字符串来删除开始和结束括号,然后用 "\\] \\[" 分隔:

            String vals = " [Peter Jackson] [UK] [United Kingdom] [London] ";
            vals = vals.trim(); //removes beginning whitspace
            vals = vals.substring(1,vals.length()-1); // removes beginning and ending bracket
            String[] list = vals.split("\\] \\[");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-03
          • 2015-06-26
          • 2020-01-07
          • 2011-08-04
          • 2015-11-06
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多