文字列の整形

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 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問ともわかりましたか?


戻る

Begin typing your search above and press enter to search. Press ESC to cancel.

Back To Top