Swiftの复数行Stringリテラルまとめ

\ nをやらなくてもよい

今更ながらSwiftの复数行Stringリテラルをを知ってわりと喜ばしいので,ここにまとめる。

  Swiftのバージョンは4.2 

基本

3つのダブルクオテーションで次ように囲む。

 让sampleString =“”“ 
あいうえおかきくけこさしすせそ
“”

来の方式で表した次のものと同等である。

  “あいうえお\ nかきくけこ\ nさしすせそ” 

すべースコード上の改行が生成物に残る。注意すべきことは「あ」の前と「そ」の后に\nがないこと。

単独の”の扱い

ひとつの"を终わりの记号と见なさないので,自由に"を含めることが出来る。

  let quotation =“”“ 
白兔戴上眼镜。 “我从哪里开始,
请your下?”他问。
 国王严肃地说:“从头开始,继续 
直到你走到尽头 然后停下来。”
“”

3つの“の扱い

"を3つ连続したいときは,\を用いて,裸の"が3つ并ぶのを回避する。

 让threeDoubleQuotationMarks =“”“ 
はじめのひとつをエスケープ\“”“
3つ全部をエスケープ\“ \” \“
“”

生成したものの中身は

 はじめのひとつをエスケープ“”“ \ n3つ全部をエスケープ”“” 

改行コードを入れない

特定の行に改行コードを入れないことが出来る。\を用いる。

 让sampleString =“”“ 
あいうえおかきくけこ\
さしすせそ
“”

これは次と同等

  “あいうえお\ nかきくけこさしすせそ” 

始めと终わりに改行コードを入れる

始めと终わりに改行コードをいれるには空の行を追加すればよい。

 让sampleString =“”“ 
 あいうえおかきくけこさしすせそ 
  “” 

中の仕様により空の行の追加がうまくいかないが,空の行を入れたとする。これは次と同等

  “ \ nあいうえお\ nかきくけこ\ nさしすせそ\ n” 

インデント处理

行の左端から文字を书くのはコードが见にくくなるので次のように先头にスペースを复数书いてもよい。

 让sampleString =“”“ 
あいうえおかきくけこ
“”

これは

  “あいうえお\ nかきくけこ\ nさしすせそ” 

と同等。スペースの处理はこのように行われる

  1. 终わりの"""の前にあるスペースを数える。この场合4个。
  2. からの行から4つ分の先头スペースを排除

よって次のものは

 让sampleString =“”“ 
あいうえおかきくけこ
“”

こうなる

  “あいうえお\ nかきくけこ\ nさしすせそ” 

ちなみにスペースの代わりにタブでやってみたらタブでも大丈夫だった。

当然,当然次のものも気になるが

 让sampleString =“”“ 
あいうえおかきくけこ
“”

形式が正しくないのでコンパイルエラーになる。

结合

+などを用いて结合する际はちょっとしたコツがいる。

 让badStart =“”“ 


“”
 让结尾=“”“ 

“”
 打印(badStart + end) 

とすると,结果は


二三

となり,意図した结果ではないだろう。次に

 让goodStart =“”“ 

  “” 
打印(goodStart +结束)

のように空白行を一行空けると(Mediumの仕様により…入れたとする)结果は



となる。

おまけ

ローカライズすると,文章はlocalizable.stringsに入れることが多いので,恩恵を受ける机会は少し限定される。