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")
有效,但有什么更短的吗?
答案 0 :(得分:22)
返回特定于平台的行分隔符
sys.props("line.separator")
这将为您提供“\ n”或“\ r \ n”,具体取决于您的平台。您可以根据需要将其包装在val中,但当然不能将其嵌入字符串文字中。
如果您正在阅读不符合平台规则的文字,这显然无济于事。
参考文献:
答案 1 :(得分:15)
您的Eclipse将换行标记设置为标准Windows \ r \ n,因此您有“abcd \ r \ nefg”。正则表达式正在将其变为“abcd \ refg”,而Eclipse控制台正在使用与Windows shell的运行方式略有不同的方式。 REPL只是使用\ n作为新行标记,因此它按预期工作。
解决方案1:将Eclipse更改为仅使用\ n换行符。
解决方案2:当您需要控制换行符,使用单引号和显式\ n字符时,不要使用三重引号字符串。
解决方案3:使用更复杂的正则表达式替换\ r \ n,\ n或\ r
答案 2 :(得分:6)
如果你确定该操作系统中使用的文件的行分隔符,你应该执行以下操作:
s.replaceAll(System.lineSeparator, "")
在其他地方,你的正则表达式应该检测以下换行序列:" \ n" (Linux)," \ r" (Mac)," \ r \ n" (视窗):
s.replaceAll("(\r\n)|\r|\n", "")
第二个更短,我认为更正确。
答案 3 :(得分:6)
尝试这个有趣的结构:)
import scala.compat.Platform.EOL
println("aaa"+EOL+"bbb")
答案 4 :(得分:5)
var s = """abcd
efg""".stripMargin.replaceAll("[\n\r]","")
答案 5 :(得分:1)
使用\r\n
代替
在:
后: