Scala 之 认识Multiline String与String的stripMargin妙用

来源:互联网 发布:php windows 编译 编辑:程序博客网 时间:2024/09/21 06:34

转自:http://rscala.com/index.php/175.html


问题描述:

    在Scala代码块中如何创建多行字符串,是否存在类似其他语言的“定界符”语法?

解决方法
    要在Scala中创建多行字符串,就需要了解Scala的Multiline String。在Scala中,利用三个双引号包围多行字符串就可以实现。
代码实例如:
val foo = ”””This is
a scala multiline
String”””
运行结果为:
This is
   a scala  multiline
   String
   但上述方法存在一个缺陷问题就在与每一行可能与我们输入的内容,带有空格之类,导致每一行的开始位置不能整洁对齐。而在实际应用场景下,有时候我们就是确实需要在scala创建多少字符串,但是每一行需要固定对齐。解决该问题的方法就是应用scala的stripMargin方法,在scala中stripMargin默认是“|”作为出来连接符,在多行换行的行头前面加一个“|”符号即可。
代码实例:
val speech = ”””Let us scala and
|learn spark oh”””.stripMargin
运行的结果为:
Let us scala and
learn spark oh
    当然stripMargin方法也可以自己指定“定界符”,同时更有趣的是利用stripMargin.replaceAll方法,还可以将多行字符串”合并”一行显示。
代码实例如下:

val speech = ”””Let us scala and

#learn spark oh”””.stripMargin(”#”)
运行的结果为:
Let us scala and
learn spark oh
代码实例如下:

val speech =”””Let us scala and

|learn spark oh”””.stripMargin.replaceAll(“\n”, ” “)   //hkl:这个地方我自己试了试但是什么也没输出按照他这个来。
运行结果为:
Let us scala and learn spark oh