2017-06-14 127 views
0

这不起作用:替换 r n与 n

scala> """one\r\ntwo\r\nthree\r\nfour""".replace("\r\n", "\n") 
res1: String = one\r\ntwo\r\nthree\r\nfour 

如何做到这一点在Scala呢?

有没有更习惯的做法,而不是使用替换?

+1

''“”“\ r \ n”“”'与'\ r \ n“'有很大不同。 –

+0

@ n.m。叶普,我刚刚意识到这一点。我会接受,作为回答 – dangonfast

回答

0

问题是"""引号不会扩展转义序列。三种不同的方法:

  1. 使用单引号"为了正确对待转义序列:"one\r\ntwo";
  2. 使用s字符串插值器,小心遵循此方法,因为这可能会导致意外的替换:s"""one\r\ntwo""";
  3. 直接调用treatEscapes可以扩展字符串中的转义序列:StringContext.treatEscapes("""one\r\ntwo""")

另请参阅this earlier question

0

试试这个

"""one\r\ntwo\r\nthree\r\nfour""".replace("\\r\\n", "\n") 

\作为字符串中escape系统字符处理,所以你需要告诉compiler,它不是一个escape字符,但一个string

+0

有帮助吗? –