2017-02-17 95 views
0

我想分割字符串"}{"。不過我得到一個錯誤:Scala模式語法異常

> val string = "{one}{two}".split("}{") 
java.util.regex.PatternSyntaxException: Illegal repetition near index 0 
}{ 
^ 

我不想使用正則表達式或任何東西。我嘗試使用"\}\{",它也不起作用。

回答

2

嗯...的原因是split對待它的參數字符串爲正則表達式。

現在,{}都是正則表達式中的特殊字符。

所以,你將不得不跳過正則表達式世界的特殊字符split的說法,這樣,

val string = "{one}{two}".split("\\}\\{") 
// string: Array[String] = Array({one, two}) 
2

逃離{

val string = "{one}{two}".split("}\\{") 
0

有兩種方法可以強制元字符被當作普通字符:

- >在元字符前加一個反斜槓。 - 將其包含在\ Q(它開始引用)和\ E(結束它)內。 使用此技術時,\ Q和\ E可放置在表達式內的任何位置,前提是\ Q首先出現。

String[] ss2 = "{one}{two}".split("[}\\Q{\\E]+"); 
System.out.println(Arrays.toString(ss2)); 

output: 
[one, two]