除了暴力方法之外,我正在努力分割
String str = "a{b}c{d}"
进入
String[] arr;
arr[0] = "a"
arr[1] = "{b}"
arr[2] = "c"
arr[3] = "{d}"
想知道是否有比使用indexOf和subString更有效的方法
最佳答案
根据您当前的编辑,您似乎想要在以下位置进行拆分
- 直接在
{
之前 - 紧接
}
之后
在这种情况下,您可以使用 split
支持regex(正则表达式)的方法。正则表达式提供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}
关于java - 分割 "a{b}c{d}"的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728745/