我想分割字符串"}{"
。不過我得到一個錯誤: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]