2.2 多行字符串的创建

问题

你想在Scala中创建多行字符串,就像用其他语言的heredoc语法一样。

解决方案

在Scala中,只要使用三个双引号将想要创建成多行字符串的文本括起来即可:

虽然这样能运行,但是在这个例子中,第二行和第三行会在行首出现空白。输出这个字符串看起来像这样:

有几种方式可以解决这个问题,最好的解决方式是在多行字符串的末尾加上stripMargin方法,并使用管道符号(|)作为第二行以及之后所有行的开头:

如果不喜欢使用|符号,则只需要在调用stripMargin时指定想要使用的字符即可:

当然也可以对第二行开始所有的行进行左对齐:

所有以上方法都会产生同样的结果,即一个多行字符串,其中每一行都是左对齐的。

这些方法生成的结果是一个真正的多行字符串,每一行的末尾都有一个隐藏的\n字符。如果想把这个多行字符串转换成一个连续的行,可以在stripMargin后调用replaceAll方法,将所有的换行符替换成空格:

这会生成:

讨论

Scala多行字符串的另一大功能是,可以在字符串中直接使用单引号和双引号而不用转义:

结果为: