【Kotlin練習問題】Stringテンプレート

Kotlin

Stringテンプレートとは

String文字列にはテンプレート式というものが含まれる場合があります。これはコードの値が評価されてから、文字列として連結されるものです。テンプレート式はドルマーク($)で始まり、その後に変数名や、中括弧({})などが来ます。

val i = 15
println("i = $i") // "i = 15"と出力される

または

val s = "abc"
println("$s.length is ${s.length}") // "abc.length is 3"と出力される

正規表現

トリプルクォートで囲われた生の文字列は複数行の文字列用だけに使われるものではありません。バックスラッシュをバックスラッシュでエスケープすることなく、正規表現を作成するためにも使えます。

比較:

// 生の文字列はバックスラッシュのエスケープがいらない
"""\d"""

// 普通の文字列だとバックスラッシュのエスケープが必要
"\\d"

以下のパターンは15.07.1996(2桁の数字、ドット、2桁の数字、ドット、4桁の数字)というフォーマットで表される日付に合致します。

fun getPattern() = """\d{2}\.\d{2}\.\d{4}"""

問題

month変数を使って、上記のfun getPattern()を15 JUL 1996(2桁の数字、空白、英語での月の略称、空白、4桁の数字)というフォーマットでの日付に合致するように書き換えてください。

val month = "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)"

fun getPattern(): String = TODO()

Kotlin Playgroundでコードの編集・動作確認ができます。

答え

val month = "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)"

fun getPattern(): String = """\d{2} $month \d{4}"""
[解説]

Stringテンプレートとして$monthを使うことで、monthの実際の中身が評価されてから文字列に結合されます。また正規表現において、\dは0から9までの何かしらの数字、{}の中の数字は直前の正規表現が何回連続しているかを表しています。

したがって、\d{2}は何かしらの数字が二回続いている=二桁の数字という意味になります。

答え

その他の問題はこちらからどうぞ。

おすすめ書籍

Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。

実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。

プロフィール

プロフィール
コードラボJP

大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで

コードラボJPをフォローする
タイトルとURLをコピーしました