我试图用字符"}{"
分割字符串。但是我收到了一个错误:
> val string = "{one}{two}".split("}{")
java.util.regex.PatternSyntaxException: Illegal repetition near index 0
}{
^
我不想使用正则表达式或任何东西。我尝试使用"\}\{"
,但它也无法正常工作。
答案 0 :(得分:2)
逃离{
val string = "{one}{two}".split("}\\{")
答案 1 :(得分:2)
嗯......原因是split
将其参数字符串视为正则表达式。
现在,{
和}
都是正则表达式中的特殊字符。
所以你必须跳过split
论证的正则表达式世界的特殊字符,像这样,
val string = "{one}{two}".split("\\}\\{")
// string: Array[String] = Array({one, two})
答案 2 :(得分:0)
有两种方法可以强制将元字符视为普通字符:
- >在元字符前面加一个反斜杠。
String[] ss1 = "{one}{two}".split("[}\\{]+");
System.out.println(Arrays.toString(ss1));
output:
[one, two]
- >将它包含在\ Q(开始引用)和\ E(结束它)中。 使用此技术时,\ Q和\ E可以放在表达式中的任何位置,前提是\ Q首先出现。
String[] ss2 = "{one}{two}".split("[}\\Q{\\E]+");
System.out.println(Arrays.toString(ss2));
output:
[one, two]