最好的分割方式" a {b} c {d}"

时间:2018-06-06 20:09:29

标签: java split

我除了蛮力方法之外还要挣扎分裂

String str = "a{b}c{d}" 

String[] arr;
arr[0] = "a"
arr[1] = "{b}"
arr[2] = "c"
arr[3] = "{d}"

想知道除了使用indexOf和subString之外是否还有更有效的方法

5 个答案:

答案 0 :(得分:4)

根据您当前的编辑,您似乎想要在

的地方拆分
  • 直接在{
  • 之前
  • 直接在}
  • 之后

在这种情况下,您可以使用支持正则表达式(正则表达式)的split方法。正则表达式提供lookaround机制,如

  • (?=subregex)看看我们是否之前 可以与subregex
  • 匹配的内容
  • (?<=subregex)看看我们是否之后可以与subregex匹配

此外,{}被视为正则表达式元字符(我们可以像{m,n}一样使用它们来描述重复次数,例如a{1,3}可以匹配a,{ {1}},aa但不是aaa或更多)因此,为了使其成为普通文字,我们需要像aaaa\{

一样将其转义

您需要的最后一件事是\}运算符,表示为OR

所以你的代码看起来像:

|

输出:

String str = "a{b}c{d}";
String[] arr = str.split("(?=\\{)|(?<=\\})"); // split at places before "{" OR after "}"
for (String s : arr){
    System.out.println(s);
}

演示:https://ideone.com/FdUbKs

答案 1 :(得分:1)

只需使用String.split()方法(documentation)

arr = str.split()

答案 2 :(得分:1)

您可以使用String.split(String delimiter)方法:

String str = "a {b} c {d}";
String[] arr = str.split(" ");
System.out.println(Arrays.toString(arr));  //  [a, {b], c, {d}]

答案 3 :(得分:1)

使用String.split() ...

String[] arr = str.split(" ");

答案 4 :(得分:1)

我不知道它是否与之前的正则表达式解决方案一样有效;我在{和after}之前放了一个空格,然后用“”分隔字符串:

    String str = "a{b}c{d}";
    String[] split = str.replace("{"," {").replace("}","} ").split(" ");
    System.out.println(Arrays.toString(split));

期望的输出:

    [a, {b}, c, {d}]