我正在努力用暴力破解以外的方法
String str = "a{b}c{d}"
进入
String[] arr;
arr[0] = "a"
arr[1] = "{b}"
arr[2] = "c"
arr[3] = "{d}"
想知道是否还有比使用indexOf和subString更有效的方法
最佳答案
根据您当前的编辑,您似乎想在原处拆分{
之前
直接在}
之后
在这种情况下,您可以使用支持正则表达式(正则表达式)的split
方法。正则表达式提供lookaround机制,例如(?=subregex)
看看我们是否在subregex
可以匹配的内容之前(?<=subregex)
看看我们是否紧追subregex
可以匹配的事物
另外,{
和}
也被视为正则表达式元字符(我们可以像{m,n}
那样使用它们来描述重复次数,例如a{1,3}
可以匹配a
,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);
}
输出:
a
{b}
c
{d}
演示:https://ideone.com/FdUbKs