我除了蛮力方法之外还要挣扎分裂
String str = "a{b}c{d}"
到
String[] arr;
arr[0] = "a"
arr[1] = "{b}"
arr[2] = "c"
arr[3] = "{d}"
想知道除了使用indexOf和subString之外是否还有更有效的方法
答案 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);
}
答案 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}]