scala學習手記6 - 字符串與多行原始字符串


scala中的字符串類就是java中的java.lang.String類。不過scala也為String提供了一個富封裝類:scala.runtime.RichString。

scala可以將java.lang.String類自動轉換為scala.runtime.RichString類。這樣就可以非常方便地使用capitalize()、lines()和reverse()等方法相對較便捷的方法(有時候這樣做也會帶來一些問題,比如涉及到類型比較的時候)。

在scala里,對於字符串的支持中最顯著的一個特性是對於heredoc的支持,也就是對多行文本的支持。在scala里創建多行字符串非常容易,只要將多行字符串放在三個雙引號里就行。在下面的代碼里創建了一個四行的字符串:

var info =
  """
     這里是robin的信息:
          robin的姓名:robin zhang;
          robin的年齡:29;
          robin的個人主頁:zhyea.com
  """

println(info)

輸出如下:

image

scala會將三個雙引號間的內容保持原樣,在scala里稱為原始字符串。比如我們可以在原始字符串里直接使用雙引號或者反斜杠:

var info =
  """
     這里是robin的信息:
          robin的姓名:robin zhang;
          robin的年齡:29, or "nicai";
          robin的個人主頁:zhyea.com
     然后我想換行來着:\n
     好吧,沒有成功換行!
  """

println(info)

輸出如下:

image

如果不想使用縮進的話可以考慮使用RichString的stripMargin()方法,這個方法需要配合管道符號“|”使用。stripMargin()會去掉先導管道符“|”前所有的空白或控制字符。如果出現在其他地方,而不是每行的開始,就會保留管道符。可以看一下下面的代碼:

var info =
  """
     這里是robin的信息:
          |robin的姓名:robin zhang;
          \n|robin的年齡:29, or "nicai";
          robin的個人主頁:zhyea.com
  """

println(info.stripMargin)

下面是執行結果:

image

如果出於某種原因,管道符號“|”有特殊的用途,可以用stripMargin的重載方法來選擇其他字符作為邊緣字符。

######


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM