背景
先日、Kolinのリファレンスを読んでいたら、不思議なコードを見かけました。
val text = """
for (c in "foo")
print(c)
"""
ダブルコートが3つ!?嘘だろ..と思い
これがなんなのか調べました。
(と言いつつ、リファレンスで見つけたので、リファレンスを読んで試しただけです。)
トリプルクウォートで囲まれた文字
kotlinでトリプルクウォートで囲まれた文字はraw stringと呼ぶようです。
この中では、改行やスペースや「"」などのエスケープ文字が必要になる記号を、そのまま入力しても入力したままの文字として扱ってくれるようです。
val text = """
"hello world",
\n
¥¥¥¥
&&'`123n%^&*
"""
println("$text")
output
"hello world",
\n
¥¥¥¥
&&'`123n%^&*
ただ、インデントまで文字列として入ってしまうよう...
なので trimMargin()
が用意されています。
trimMargin()
の引数には行の先頭の記号を指定できます。(デフォは"|")
このメソッドを使用することで、その記号が行の先頭になります。
val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()
println("$text")
output
Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
(Benjamin Franklin)
終わりに
正直、これといって使い道は思い当たらないですが、
覚えておくといつか使えそうな気がします。
詳細は、下記のリファレンスを見てみてください。