Scala中的换行符

问题描述

| Scala中有换行符的简写吗?在Java(在Windows上)中,我通常只使用\“ \\ n \”,但这在Scala中似乎不起作用-特别是
val s = \"\"\"abcd
efg\"\"\"
val s2 = s.replace(\"\\n\",\"\")
println(s2)
输出
abcd
efg
在Eclipse中
efgd
(sic)在命令行中,以及
abcdefg
来自REPL(大成功!)
String.format(\"%n\")
有效,但是还有什么短的吗?     

解决方法

        您的Eclipse将换行标记设置为标准Windows \\ r \\ n,因此您具有\“ abcd \\ r \\ nefg \”。正则表达式将其变成\“ abcd \\ refg \”,Eclipse控制台对\\ r的处理与Windows Shell的处理略有不同。 REPL只是使用\\ n作为新的行标记,因此可以正常工作。 解决方案1:将Eclipse更改为仅使用\\ n换行符。 解决方案2:在需要控制换行符,使用单引号和显式\\ n字符时,请勿使用三引号引起来的字符串。 解决方案3:使用更复杂的正则表达式替换\\ r \\ n,\\ n或\\ r     ,        特定于平台的行分隔符由返回
sys.props(\"line.separator\")
这将为您提供\“ \\ n \”或\“ \\ r \\ n \”,具体取决于您的平台。您可以随意将其包装在val中,但是您当然不能将其嵌入字符串文字中。 如果您阅读的文字不符合您平台的规则,这显然无济于事。 参考文献: scala.sys软件包scaladoc(用于sys.props) java.lang.System.getProperties javadoc(用于\“ line.separator \”)     ,        如果确定此操作系统中使用的文件中的文件的行分隔符,则应执行以下操作:
s.replaceAll(System.lineSeparator,\"\")
正则表达式在其他地方应检测以下换行符序列:\“ \\ n \”(Linux),\“ \\ r \”(Mac),\“ \\ r \\ n \”(Windows):
s.replaceAll(\"(\\r\\n)|\\r|\\n\",\"\")
第二个更短,我认为更正确。     ,        试试这个有趣的结构:)
import scala.compat.Platform.EOL
println(\"aaa\"+EOL+\"bbb\")
    ,        
var s = \"\"\"abcd
efg\"\"\".stripMargin.replaceAll(\"[\\n\\r]\",\"\")
    ,        改用
\\r\\n
之前: 后: