文字列入門

文字列についてはJS入門でも少しやりましたが、ゲームよりAndroidアプリの方が文字列を良く使うので、ここであらためて見ておきましょう。

といっても文字列はいろんな機能があるので、最初に全部やるのは大変です。 ここでは、ドラクエIIIに例えるととりあえず船取るくらいまで通じる程度の入門をしたいと思います。

まず文字列はダブルクオートで囲んだものです。"ほげほげ"などが文字列です。 型としてはString型です。

fun main() { val mojiretu = "これは文字列です" println(mojiretu) }

改行は\n(Windowsだと¥n)

文字列の中に改行を入れる事が出来ます。改行はバックスラッシュとnで書きます。Windowsだと半角の¥記号とnです。 (バックスラッシュはホームページ上でトラブルを生みがちなので説明では全角で書いています)

改行ってなんやねん?と思う人もいると思うので、見てみるのがいいです。

fun main() { val mojiretu = "これ\nは\n改行\nの\n例です" println(mojiretu) }

このバックスラッシュとnというのを入れると、次の行に行く感じです。

文字列の連結は「+」

文字列をつなぎ合わせるのはプラス記号(+)です。

fun main() { val s1 = "ついにねんがんの" val s2 = "アイスソードを" val s3 = "てにいれたぞ" val s = s1+s2+s3 println(s) }

こんな感じでつなげる事が出来ます。"1"+"2"は3では無く"12"になる事に注意しましょう。

fun main() { println("1"+"2") }

varと+=で連結

kotlinには+=というのもあります。 少しややこしいですが、

a += b

は、以下と同じ意味です。

a = a + b

慣れないうちはいつも頭の中で下になおして考えましょう。 そしてこの+=は変更した結果をまた同じ変数に代入するので、いつもvarになります。 +=を使う時はvar、と覚えておくといいかもしれない。

以下例を見てみましょう。+=は、複数ある文字列をつなげる時に良く使います。

fun main() { val s1 = "ついにねんがんの" val s2 = "アイスソードを" val s3 = "てにいれたぞ" var s = "" s += s1 s += s2 s += s3 println(s) }

sがvarなのに注目。こういう風に+=を使う変数はvarにしないといけない(上のコードをvalに変更してとどうなるか試してみよう)。

これだけだとなんでこんな事するの?って感じですが、Listとかfor文が出てくるともうちょっと意味が分かります。 以下はコレクションとforループをやるところで説明しますが、こんな感じで使う、という雰囲気を感じ取るべく載せておきます。

fun main() { val items = listOf("ついにねんがんの", "アイスソードを", "てにいれたぞ") var s = "" for(item in items) { s += item } println(s) }

こんな感じで、リストの文字列を全部つなげたい、みたいな時に+=を使うと便利です。

なお、別に上のコードの+=のところを、以下のように書いても構いません。

s = s + item

つまりこんな感じ。

fun main() { val items = listOf("ついにねんがんの", "アイスソードを", "てにいれたぞ") var s = "" for(item in items) { s = s + item } println(s) }

いいんだけど、普通は+=で書くかな。

String template

文字列の中にドルと変数名でString templateです。

fun main() { val counter = 1234 val s = "あなたは$counter 人目の来場者です" println(s) }

変数の切れ目がkotlin側に分かるように空白など(カンマとかでも平気)が必要になる場合があります。(上の例で空白を削除して実行してみよう)

空白を開けたくないときやもっと複雑な式を入れたいときは中括弧でくくります。

fun main() { val counter = 1234 val s = "あなたは${counter}人目の来場者です" println(s) }

結構便利なので良く使います。

Raw string

ダブルクオート三つでraw stringと呼ばれるもになります。

fun main() { val s = """ 複数行がこうやって書ける。 ダブルクオートも使える。"文字列"みたいに。 いろいろテキストをそのまま書けて便利。 """ println(s) }

こういう風に複数行をバックスラッシュnとかいっぱい入れずに書けてちょっと便利という機能ですが、 後編のテキスト処理入門まで使わないので、 最初の時点では「こんな機能もあるらしい」くらいに薄っすらと覚えておけば十分です。