文字列の整形

String format

作文ゲームでは、文字列の足し算を行いました。
“こん” + “にちは”の結果は”こんにちは”になります。

お手軽な方法ですが、複雑な文字列整形になるとややこしくなります。
ここでは文字列の整形方法を学びます。

学習内容
・文字列をキレイに作る方法
・String format
・方法は一つじゃない
・復習と応用問題

1.現在のプログラム

下の画像は現在のプログラムです。

文字列を+で繋いでいます。この程度なら問題ありませんが、もっと長くて複雑な文字列になると全体像が見えづらくなります。

そこで、『Stringのformat』を使います。

2.String format

+で繋げていた文字列をStringのformatで作ると、↓のようになります。

format:の後ろに“%@、%@で%@と%@が%@”と書かれていますが、これはテンプレートです。

%@は文字列に置き換えられます。

テンプレートの次に文字列の変数が5つ羅列されています。%@も5つありますね。

テンプレート内の記号(%@など)と、後ろに羅列されている変数の数は一致していなくてはいけません。

テンプレートの1つ目の%@には、羅列された変数の1番目『whenArray[whereNumber]』の内容が入ります。

2番目以降も同様で、前から順に羅列された変数の内容が%@に置き換えられていきます。

では実際に作文ゲームのプログラムを書き換えて実行してみましょう。

下のように書き換えて実行してください。

Lesson6と同じように動作したでしょうか?動作は変化していませんね。

プログラムは、結果は同じでも書き方は色々あります。その場に応じて最適な作り方をするのが大事です。

どの方法が最適なのかという感覚は、プログラムをたくさん書くことで身につきます。

3.%@以外にも色々あります

%@は文字列に置き換わりますが、数字は他の記号を使います。

formatのテンプレートで使う記号

整数(Int):%d
単精度小数点(Float):%f
倍精度小数点(Double):%f

例えば整数や小数点をformatで使うと下のようになります。

結果としてtestにはどういう文字列が入るでしょうか?

正解は『りんごが5個、気温は-12℃、円周率は3.141500です。こんにちは』です。

円周率に余計な0が2つ付いていますが、これは桁数を指定しなかったためです。

『%.2f』(パーセント、ドット、2エフ)の様に小数点以下の桁数を指定すれば、その桁数だけ表示されます。

『%.2f』なら小数点以下2位まで表示します。

この結果は『円周率は3.14です』となります。%.2fの場合、小数点3位を四捨五入します。

『%.3f』なら『円周率は3.142です』となります。

4.練習問題

let a = “def”
let x = 456
let test = String(format:”abc%@ 123%d”,a,x)

結果としてtestに入るのはどういう文字列でしょうか?考えてみてください。

正解はちょっと下↓

正解:abcdef 123456

第2問。

let kingaku = 789
let a = “ありがとうございます。”
let otsuri = 456
let test = String(format:”%d円になります。%@おつりは%d円です。”,kingaku,a,otsuri)

この場合、testの中身はどうなるでしょうか?

正解:789円になります。ありがとうございます。おつりは456円です。

どうですか?2問とも判りましたか?


戻る