文字列の整形
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です』となります。
10.復習と応用の正解
練習問題
let x = 456
let test = String(format:”abc%@ 123%d”,a,x)
結果としてtestに入るのはどういう文字列でしょうか? 考えてみてください。
第2問。
let a = “ありがとうございます。”
let otsuri = 456
let test = String(format:”%d円になります。%@おつりは%d円です。”,kingaku,a,otsuri)
この場合、testの中身はどうなるでしょうか?
どうですか? 2問ともわかりましたか?