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

\nをやらなくてもよい

samekard
Swift・iOSコラム
4 min readFeb 3, 2019

--

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

基本

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

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

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

単独の ” の扱い

ひとつの " を終わりの記号と見なさないので、自由に " を含めることが出来る。

3つの “ の扱い

" を3つ連続したいときは、\を用いて、裸の " が3つ並ぶのを回避する。

生成したものの中身は

改行コードを入れない

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

これは次と同等

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

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

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

インデント処理

行の左端から文字を書くのはコードが見にくくなるので次のように先頭にスペースを複数書いてもよい。

これは

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

  1. 終わりの """ の前にあるスペースを数える。この場合4個。
  2. それぞれの行から4つ分の先頭スペースを排除

よって次のものは

こうなる

Appleの資料より

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

また、当然次のものも気になるが

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

結合

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

とすると、結果は

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

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

となる。

おまけ

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

--

--

samekard
Swift・iOSコラム

iOSアプリをいろいろ作りました。英語と中国語を勉強中。