1. 文字型
Charが文字型です。C言語などと違い、直接的に数値として扱うことはできません。
文字リテラルはシングルクォートで囲います。
バックスラッシュを利用することで、エスケープシーケンスを利用することもできます。
\t | 水平タブ |
\b | バックスペース |
\n | 改行 |
\r | 復帰 |
\’ | シングルクォーテーション |
\” | ダブルクォーテーション |
\\ | バックスラッシュ |
\$ | ダラーマーク |
\u[unicode] | Unicode |
fun main(args: Array) {
val c = 'a'
// これはビルドエラー
// if (c == 0)
// println("cは0です")
// else
// println("cは0以外です")
// 明示的に変換する必要がある
if (c.toInt() == 0)
println("cは0です")
else
println("cは0以外です")
// エスケープシーケンスを利用する
val cArray = arrayOf('\u3053', '\u3068', '\n', '\t', '\u308A', '\u3093')
for(c in cArray) {
print(c)
}
}
cは0以外です
こと
りん
2. 文字列
Stringが文字列型です。文字列型はイミュータブルで、各要素の文字にはstr[index]のようにアクセウできます。
また、forループで各要素をイテレーションすることもできます。
文字列リテラルには2種類あります。
1つはダブルクォートで囲うもので、Javaなどにもある一般的な文字列リテラルです。
もう1つは、トリプルクォート(“””some string”””)で囲うもので、
バックスラッシュによるエスケープなしに目で見たままの文字列を表現できます
fun main(args: Array) {
val str = "Hello\n\tWorld!"
println(str)
println("-----------")
for(c in str) {
println(c)
}
println("-----------")
// コード上の見た目そのままに入力されてしまうため、
// コード上の字下げやインデントなどもそのまま表現されてしまう
val str2 = """
Hello
World!
"""
println(str2)
println("-----------")
// マージンプレフィックスをつけてtrimMarginをすることで
// 簡単に見た目をきれいにできる
val str3 = """
|Hello
| World!
"""
print(str3.trimMargin())
}
Hello
World!
-----------
H
e
l
l
o
W
o
r
l
d
!
-----------
Hello
World!
-----------
Hello
World!
4. 文字列テンプレート
ここまでも何度か登場してきましたが、
文字列の中に${式}とするとこで式を評価した結果を文字列にすることができます。
fun main(args: Array) {
val str = "TestString"
val num = 10
println("${str}の長さは${str.length}です")
println("${num}を2倍にした値は${num * 2}です")
}
TestStringの長さは10です
10を2倍にした値は20です
$を文字列テンプレートではなく、そのままの文字として扱いたい場合はエスケープシーケンスを使います。
fun main(args: Array) {
val str = "TestString"
println("\${str}の結果は${str}です")
}
${str}の結果はTestStringです
また、トリプルクォートでも同じように文字列テンプレートを使えますが、
エスケープシーケンスを使うことができないため、次のようにします。
fun main(args: Array) {
val str = "TestString"
println("""${'$'}{str}の結果は${str}です""")
}
${str}の結果はTestStringです