兩個多\\
這項工作:
scala> line.replaceAll("\"" , "\\\\\"");
res5: java.lang.String = replace \" quote
這裏的問題是有兩個'層'逃離字符串。第一層是編譯器,我們可以在REPL中輕鬆看到:
scala> "\""
res0: java.lang.String = "
scala> "\\"
res1: java.lang.String = \
scala> "\\\""
res2: java.lang.String = \"
scala> val line:String = "replace \" quote";
line: String = replace " quote
第二層是正則表達式解釋器。這一個是很難看到,但可以通過applyin您的例子可以看出:
scala> line.replaceAll("\"" , "\\\"");
res5: java.lang.String = replace " quote
什麼REG。進出口。口譯員確實收到的是「,這被解釋爲」。所以,我們需要註冊。進出口。接收\\「爲了使編譯器給我們\我們需要寫\\
讓我們來看看轉義:
- 正確的情況下:\\\」編譯器看到\」中,正則表達式看到\「。
- 錯誤的情況下:\\「編譯器看到\」,正則表達式看到」
它可以是一個有點混亂,儘管是非常簡單的
正如指出的@sschaef,另一種選擇是使用「」」三報價,這種形式的字符串不是由編譯器轉義:
scala> line.replaceAll("\"" , """\\"""");
res6: java.lang.String = replace \" quote
VAL updatedLine = line.replaceAll( 「\」 「 」\\\\\「」)工作對我來說(我需要5個報價出於某種原因)。 –
它被寫入:) – pedrofurla
爲了避免混淆,我建議使用'「」「...」「」'而不是'「...」' – sschaef