KotlinのstartsWith・endsWithを完全ガイド!文字列の先頭・末尾を判定しよう
生徒
「Kotlinで文字列が特定の言葉で始まっているか、終わっているかを調べる方法ってありますか?」
先生
「ありますよ。KotlinではstartsWithとendsWithという関数を使えば、文字列の先頭や末尾を簡単にチェックできます。」
生徒
「たとえば「https://」で始まっているURLかどうかって調べられるんですか?」
先生
「はい、それもstartsWithを使えばバッチリ判定できます。では、具体的に使い方を見ていきましょう!」
1. startsWithとは?文字列の先頭を調べるKotlinの基本機能
Kotlin(コトリン)のstartsWithは、「対象の文字列が特定のキーワードで始まっているか?」を一瞬で判定できる非常に便利な関数です。プログラミング初心者の方でも直感的に使いやすく、WebサイトのURLチェックや、名簿から特定の苗字の人を探すといった、データの振り分け作業に欠かせない基本機能です。
この関数は、条件に一致すればtrue(はい)、一致しなければfalse(いいえ)という結果を返します。この結果をif文と組み合わせることで、「もし○○で始まっていたら、この処理をする」というプログラムの流れを簡単に作ることができます。
まずは、具体的なイメージを持つために、URLが「https」で始まっているかどうかを判定する簡単なサンプルプログラムを見てみましょう。
fun main() {
// 調査対象の文字列を準備します
val url = "https://example.com"
// urlが「https://」で始まっているかチェックします
if (url.startsWith("https://")) {
// 当てはまる場合の処理
println("このサイトは安全な接続(https)で始まっています。")
} else {
// 当てはまらない場合の処理
println("このサイトは通常の接続(http)で始まっています。")
}
}
このサイトは安全な接続(https)で始まっています。
また、startsWithは検索機能の「前方一致」を実現する際にもよく使われます。例えば、果物の名前が入ったデータの中から「アップル」で始まるものだけを見つける、といった使い方も可能です。日常の言葉に近い感覚でコードが書けるため、Kotlinを学び始めたばかりの方でもスムーズに活用できるでしょう。
2. endsWithとは?文字列の末尾をチェックするKotlinの使い方
Kotlin(コトリン)のendsWithは、文字列の最後(末尾)が指定したキーワードで締めくくられているかを判定する関数です。先ほど紹介したstartsWithが「入り口」をチェックするのに対し、endsWithは「出口」をチェックする役割を持っています。
この機能は、特にファイル形式の判別や、入力されたデータの正当性を確かめるシーンで非常に重宝されます。たとえば、ユーザーがアップロードしたファイルが画像なのか、それともドキュメントなのかを、ファイル名の後ろに付く「拡張子」を見て自動で判断させることが可能です。
プログラミング未経験の方でも分かりやすいように、保存されたファイルが「写真データ(.jpg)」かどうかを判定するシミュレーションを確認してみましょう。
fun main() {
// 判定したいファイル名を用意します
val fileName = "summer_memory.jpg"
// 文字列の最後が「.jpg」で終わっているかチェック
if (fileName.endsWith(".jpg")) {
// 条件に一致する場合(true)
println("このファイルはJPEG画像です。写真として表示します。")
} else {
// 条件に一致しない場合(false)
println("JPEG画像ではありません。別の形式として処理します。")
}
}
このファイルはJPEG画像です。写真として表示します。
プログラムの世界では、こうした「お尻の文字の一致」を確認することを「後方一致」と呼びます。endsWithを使うことで、例えば「特定のドメインのメールアドレスか?」「住所の末尾が『市』で終わっているか?」といった複雑に見える判別も、たった1行のコードでスマートに実装できるようになります。シンプルながらも、実務での活用範囲が非常に広い重要なテクニックです。
3. KotlinのstartsWith・endsWithの注意点:大文字・小文字の違い
KotlinでstartsWithやendsWithを使いこなす上で、必ず覚えておきたい重要なルールがあります。それは、プログラムが「大文字」と「小文字」を厳密に別の文字として区別しているという点です。
例えば、私たちが普段「Apple」と「apple」を同じ意味として捉えても、コンピュータは「A」と「a」を全く違うデータとして判断します。このため、検索キーワードやユーザーが入力した文字を判定する際に、大文字と小文字が混ざっていると、本当は一致しているはずなのにfalse(不一致)と判定されてしまうケースがあるのです。
まずは、大文字と小文字が原因で判定に失敗する、初心者が陥りやすい例を確認してみましょう。
fun main() {
// 判定対象の文字列(先頭が大文字のH)
val greeting = "Hello, Kotlin!"
// 小文字の「hello」で始まっているかチェック
val result = greeting.startsWith("hello")
// 結果を表示(大文字と小文字が違うため、一致しないと判定されます)
println("判定結果: " + result)
}
判定結果: false
このようなズレを防ぐためには、判定を行う前に、対象となる文字列を一度すべて小文字(または大文字)に揃えてしまうのがエンジニアの定番のテクニックです。Kotlinではlowercase()という機能を使うことで、簡単に文字の種類を統一できます。
この一工夫を加えるだけで、ユーザーが「HELLO」と入力しても「hello」と入力しても、正しく判定できる安定したプログラムになります。大文字・小文字を無視してチェックしたい場合の書き方を見てみましょう。
fun main() {
val greeting = "Hello, Kotlin!"
// lowercase()を使って、元の文字を一度すべて小文字に変換してから判定します
// これにより「Hello」が「hello」として扱われるため、判定が成功します
val checkResult = greeting.lowercase().startsWith("hello")
println("変換後の判定結果: " + checkResult)
}
変換後の判定結果: true
この手法は、WebサイトのログインIDチェックやタグ検索の実装など、実務のあらゆる場面で活用されています。文字列の比較を行うときは「文字のケース(大文字・小文字)を揃える」という習慣をつけておくと、バグの少ないスムーズな開発ができるようになります。
4. Kotlinでメールアドレスや電話番号をチェックする例
KotlinのstartsWithやendsWithは、実務においてデータのバリデーション(入力チェック)に非常に多く活用されます。例えば、お問い合わせフォームに入力された値が正しい形式か判断したり、特定のサービス利用者だけに限定した処理を行ったりする場合です。
まずは、メールアドレスのドメインを判定する例を見てみましょう。「@gmail.com」で終わるメールアドレスだけを抽出したい場合は、次のように記述します。
fun main() {
// ユーザーが入力したメールアドレスと仮定します
val email = "example@gmail.com"
// 文字列の末尾が「@gmail.com」であるか判定
if (email.endsWith("@gmail.com")) {
// 条件に一致する場合のメッセージ
println("Googleアカウント(Gmail)での登録を確認しました。")
} else {
// 条件に一致しない場合のメッセージ
println("Gmail以外のメールアドレスです。")
}
}
Googleアカウント(Gmail)での登録を確認しました。
次に、電話番号の「市外局番」や「キャリア識別番号」をチェックする例です。日本の携帯電話で一般的な「080」から始まる番号かどうかを確認することで、固定電話か携帯電話かを自動で判別するような仕組みが作れます。
fun main() {
// 判定したい電話番号
val phone = "08012345678"
// 文字列の先頭が「080」で始まっているか判定
if (phone.startsWith("080")) {
println("この番号は、080から始まる携帯電話の番号です。")
} else {
println("080から始まる番号ではありません。")
}
}
この番号は、080から始まる携帯電話の番号です。
このように、startsWithとendsWithを使い分けることで、複雑な条件分岐もシンプルに記述できます。プログラミング未経験の方でも、この2つの関数を覚えるだけで、「特定のルール(接頭辞や接尾辞)に従ったデータかどうか」を瞬時に見分ける高度なプログラムが作成可能になります。
5. startsWith・endsWithは文字列検索に最適なKotlin関数
KotlinのstartsWithとendsWithは、大量のデータから特定の条件に合うものを見つけ出す「フィルタリング機能」や「検索機能」の実装に欠かせない、非常に実用性の高い関数です。アプリやWebサービスにおいて、ユーザーが入力したキーワードをもとに情報を絞り込む処理は、UX(ユーザー体験)を向上させるための重要な要素となります。
たとえば、ショッピングサイトの検索バーで「アップル」と入力された際に、商品名の先頭が「アップル」で始まるものだけを瞬時に表示させたい場合は、startsWithが最適です。また、画像ギャラリーアプリなどで、端末内の全ファイルから「.png」や「.gif」といった特定の拡張子で終わるファイルだけを抜き出して表示したい場合には、endsWithが大活躍します。
プログラミング未経験の方でも直感的に理解できるように、複数のフルーツ名が入ったリストの中から「メロン」で始まる名前を探し出す、簡単な検索シミュレーションのサンプルコードを見てみましょう。
fun main() {
// 検索対象のフルーツ名を用意します
val item1 = "メロンパン"
val item2 = "スイカ"
val item3 = "メロンシャーベット"
// 「メロン」で始まるかチェックする共通の処理
val keyword = "メロン"
if (item1.startsWith(keyword)) {
println(item1 + " は検索条件にヒットしました!")
}
if (item2.startsWith(keyword)) {
println(item2 + " は検索条件にヒットしました!")
}
if (item3.startsWith(keyword)) {
println(item3 + " は検索条件にヒットしました!")
}
}
メロンパン は検索条件にヒットしました!
メロンシャーベット は検索条件にヒットしました!
このように、startsWithやendsWithを活用することで、膨大なデータの中から必要な情報だけをピンポイントで抽出するロジックを、驚くほどシンプルに記述できます。文字列の一部分が一致するかを判定するこの技術は、日常的に使う検索エンジンの仕組みや、スマートフォンの連絡先検索など、私たちの身近なデジタル体験を支える基盤となっています。
6. startsWithで複数条件を判定する方法
KotlinのstartsWithは単体でも便利ですが、複数の条件を組み合わせることでより柔軟な判定が可能になります。例えば複数のパターンに一致するかを調べたい場合には、論理演算子を使って組み合わせる方法がよく使われます。
プログラミング未経験の方は、いくつかの条件のどれかに当てはまるかをチェックするという考え方で理解すると分かりやすいです。例えばURLがhttpまたはhttpsで始まるかを確認する処理は実務でも頻繁に登場します。
fun main() {
val url = "http://example.com"
if (url.startsWith("http://") || url.startsWith("https://")) {
println("有効なURL形式です")
} else {
println("URL形式ではありません")
}
}
有効なURL形式です
このように複数条件を組み合わせることで、より実用的な文字列チェックができるようになります。
7. startsWithとendsWithを組み合わせた応用例
startsWithとendsWithはそれぞれ単独で使うだけでなく、組み合わせて使うことでより高度な条件判定が可能になります。例えば特定の形式のデータだけを抽出する場合に非常に役立ちます。
初心者の方でも理解しやすい例として、特定のプレフィックスとサフィックスを同時にチェックする方法を見てみましょう。
fun main() {
val fileName = "log_2024.txt"
if (fileName.startsWith("log_") && fileName.endsWith(".txt")) {
println("ログファイルです")
} else {
println("対象外ファイルです")
}
}
ログファイルです
このように前方一致と後方一致を同時に使うことで、より正確なデータ判定ができるようになります。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
8. 部分一致との違いと使い分け
KotlinにはstartsWithやendsWithのほかに、文字列の中に特定の文字が含まれているかを確認するcontainsという関数もあります。これらの違いを理解することで、目的に応じた適切な関数を選択できるようになります。
startsWithは先頭一致、endsWithは末尾一致、containsは部分一致という違いがあります。それぞれ用途が異なるため使い分けが重要です。
fun main() {
val text = "Kotlin Programming"
println(text.startsWith("Kotlin"))
println(text.endsWith("Programming"))
println(text.contains("gram"))
}
true
true
true
このように用途に応じて関数を使い分けることで、より柔軟で正確な文字列処理が可能になります。プログラミング初心者の方はまずこの違いをしっかり理解しておくことが重要です。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験