Kotlinの文字列を1文字ずつ処理する方法!for文とforEachの使い方を初心者向けに解説
生徒
「Kotlinで文字列の中身を1文字ずつ取り出して処理することってできますか?」
先生
「できますよ。Kotlinではfor文やforEachという方法で文字列を1文字ずつ処理できます。」
生徒
「それぞれどういう風に使えばいいんでしょうか?」
先生
「それでは、Kotlinの文字列をイテレート(1文字ずつ取り出す)する方法を、順を追って丁寧に解説しますね。」
1. 文字列をイテレートするとは?
「イテレート」とは、ひとつずつ順番に処理していくことです。
Kotlin(ことりん)では、文字列は1文字ずつバラバラに扱うことができるようになっています。
たとえば、「Hello」という文字列があれば、それを「H」「e」「l」「l」「o」と1文字ずつ取り出して処理できます。
2. for文を使った文字列のイテレート
Kotlinではfor文を使って、文字列を1文字ずつ処理することができます。
これは、順番に文字を取り出していく基本的な方法です。
fun main() {
val text = "Kotlin"
for (char in text) {
println(char)
}
}
K
o
t
l
i
n
char in textの部分で、textの中の文字が1つずつcharに入って処理されます。
3. forEachを使った書き方
forEachという関数を使っても、同じように1文字ずつ処理できます。
こちらは関数型の書き方で、少しスタイリッシュです。
fun main() {
val text = "Kotlin"
text.forEach { char ->
println(char)
}
}
K
o
t
l
i
n
forEachの中で、1文字ずつcharとして受け取り、処理をしています。
4. for文とforEachの違い
どちらも文字列を1文字ずつ処理できますが、以下のような違いがあります。
| 特徴 | for文 | forEach |
|---|---|---|
| 読みやすさ | 直感的で初心者向き | 慣れるとスッキリ書ける |
| breakやcontinueの使用 | 使える | 使えない |
| 関数型っぽさ | なし | あり |
プログラミングに慣れてきたら、好みに合わせて使い分けるのがポイントです。
5. インデックス付きでイテレートするには?
文字と一緒に「何文字目か」を知りたい場合は、withIndex()を使います。
fun main() {
val text = "Hi!"
for ((index, char) in text.withIndex()) {
println("[$index] $char")
}
}
[0] H
[1] i
[2] !
このようにして、何番目の文字かを確認しながら処理することができます。
6. 空文字をイテレートするとどうなる?
空文字(からもじれつ)とは、文字がまったく入っていない状態の文字列です。
このような文字列をイテレートしても、何も処理されません。
fun main() {
val text = ""
for (char in text) {
println(char)
}
}
エラーにはなりませんが、何も出力されないので注意しましょう。
7. 特定の文字だけを処理したいとき
文字列の中で、特定の文字だけを処理したい場合にはif文と組み合わせます。
fun main() {
val text = "banana"
for (char in text) {
if (char == 'a') {
println("見つけた: $char")
}
}
}
見つけた: a
見つけた: a
見つけた: a
このように、特定の文字に対してだけ処理を実行できます。
8. 文字列を逆順で処理したい場合
reversed()を組み合わせれば、文字列を後ろから前に処理することも可能です。
fun main() {
val text = "Kotlin"
for (char in text.reversed()) {
println(char)
}
}
n
i
l
t
o
K
このように、逆順で文字列をイテレートしたいときも簡単に書けます。
9. forEachIndexedを使った方法
forEachIndexedを使えば、インデックスと文字を同時に扱えます。
fun main() {
val text = "ABC"
text.forEachIndexed { index, char ->
println("$index 番目の文字: $char")
}
}
0 番目の文字: A
1 番目の文字: B
2 番目の文字: C
インデックス付きの処理をしたいときにはとても便利な書き方です。