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