【问题标题】:Splitting strings by {} & []按 {} & [] 分割字符串
【发布时间】:2013-06-24 13:18:32
【问题描述】:

我对 Java 有点陌生。 我想知道是否有一种更简单有效的方法来实现以下字符串拆分。我已经尝试过使用模式和匹配器,但并没有真正按照我想要的方式出现。

"{1,24,5,[8,5,9],7,[0,1]}"

要拆分成:

1 
24
5
[8,5,9]
7
[0,1]

这是一个完全错误的代码,但我还是发布了它:

    String str = "{1,24,5,[8,5,9],7,[0,1]}";
    str= str.replaceAll("\\{", "");
    str= str.replaceAll("}", "");
    Pattern pattern = Pattern.compile("\\[(.*?)\\]");
    Matcher matcher = pattern.matcher(str);
    String[] test = new String[10];
   // String[] _test = new String[10];
    int i = 0;
    String[] split = str.split(",");

    while (matcher.find()) {


        test[i] = matcher.group(0);
        String[] split1 = matcher.group(0).split(",");


      // System.out.println(split1[i]);
           for (int j = 0; j < split.length; j++) {
             if(!split[j].equals(test[j])&&((!split[j].contains("\\["))||!split[j].contains("\\]"))){
              System.out.println(split[j]);
             }

        }
        i++;


    }

}

对于给定的字符串格式,可以说 {a,b,[c,d,e],...} 格式。我想列出所有内容,但方括号中的内容将被表示为一个元素(如数组)。

【问题讨论】:

  • 你能发布你已经尝试过的代码吗?
  • @AndrewThompson 为什么是这个标题? OP从未说过他想拆分成多维int数组,他说他只是想拆分字符串...
  • @BackSlash 嗯.. 也许我读得太多了。查看进一步的编辑。
  • 你能更精确地指定格式吗?例如,如果它是“{/} 分隔的逗号分隔元素列表,每个元素要么是正整数,要么是由 [/] 对分隔的字符串”,那么它不会很难产生一个小的解析器,或者一个组匹配是元素的正则表达式。

标签: java regex string split


【解决方案1】:

这行得通:

  public static void main(String[] args)
  {
     customSplit("{1,24,5,[8,5,9],7,[0,1]}");
  }


  static void customSplit(String str){
     Pattern pattern = Pattern.compile("[0-9]+|\\[.*?\\]");
     Matcher matcher =
           pattern.matcher(str);
     while (matcher.find()) {
        System.out.println(matcher.group());
     }
  }

产生输出

1
24
5
[8,5,9]
7
[0,1]

【讨论】:

  • 不错的解决方案。请注意,@user2516389,尽管这不会检查整个列表是否被 {/} 大括号包围,并且“嵌套数组”可以包含任何内容。例如,对于输入 "garbarge at beginning 5,[8,foo,5,9],7}}}",输出是 5[8,foo,5,9]7(其中每个都在自己的行上)。另一个例子,“{2,3},4,5”产生2 3 4 5"{2,3}4,5"也是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
相关资源
最近更新 更多