我正在努力用暴力破解以外的方法

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}可以匹配aaaaaa但不能匹配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

08-18 05:58