拆分"["和"]"以及标准转义不起作用



我正在尝试拆分可能包含也可能不包含字符"["和"]"的字符串,并且在放置条件"如果字符串包含 [ 或 ]"但得到一个

java.util.regex.PatternSyntaxException: 未闭合字符类附近 索引 1
[
^

如果我对 Split 参数使用"\[",系统输出说字符串是 \[,如果我删除其中一个 \,它显然会出现编译错误。使用\[我的简单拆分不起作用。添加更多 \ 无济于事。

我尝试了字符串 x = Pattern.quote("["(; 然后拆分为 x,但没有。它不起作用。

我正在使用Java呃...8?因为我可以将完整的方法放入接口和 Spring 框架中。我不知道它是否改变了某些东西,但我也连接到 SQL 数据库,但数据被读取,所以我怀疑问题是否存在。

为好奇的人编写代码。

public List<String> equippableBy()
{
List<String> list = new ArrayList<String>();
String bracket = "\[";

if(desc.contains(bracket))
{   
String[] lista = desc.split(bracket);
String[] classi = lista[1].split("-");
for(int i = 0; i < classi.length; i++)
{
if(!classi[i].contains(bracket))
list.add(classi[i]);
else
list.add(classi[i].split(bracket)[0]);
}   
return list;
}
else 
{
list.add("Not Equippable");
return list;
}   
}

编辑:我也注意到这里逃脱反斜杠的问题。我的意思是双反斜杠不会显示单个 [ 用于拆分。

String#contains

不接受像String#split这样的正则表达式。

改变

if(desc.contains(bracket))

if(desc.contains("["))

另外,更改

if(!classi[i].contains(bracket))

if(!classi[i].contains("["))

或者,您可以将bracket定义为文本括号并使用Pattern.quote进行拆分。

final String bracket = "[";
//...
list.add(classi[i].split(Pattern.quote(bracket))[0]);

最新更新