Javaで文字列が始まる・終わるかをチェックする方法(startsWith, endsWith)
新人
「先輩、Javaで文字列が特定の文字で始まったり終わったりするかを簡単に調べる方法ってありますか?」
先輩
「JavaではStringクラスのstartsWith()やendsWith()メソッドを使うと、文字列の先頭や末尾に特定の文字列があるか簡単に確認できます。」
新人
「それはどんな場合に役立つんですか?」
先輩
「例えば、ファイル名の拡張子を確認したり、URLの先頭がhttpsかどうか調べたり、ユーザー入力の形式をチェックする場合などに使えます。Javaでの文字列操作ではとても便利なメソッドです。」
新人
「なるほど。具体的にはどのように使えばいいんですか?」
先輩
「それでは、基本の使い方から見ていきましょう。」
1. Javaの文字列操作の基本とstartsWith、endsWithの概要
Javaで文字列を扱うとき、文字列操作は非常に重要です。文字列の結合、部分抽出、検索など様々な操作が必要になります。その中でもstartsWith()やendsWith()は、文字列の先頭や末尾に特定の文字列があるかどうかを真偽値で返す便利なメソッドです。Javaでは、文字列チェックを簡単に行う基本テクニックとして覚えておくと便利です。
これらのメソッドを使うと、条件分岐や入力検証、ファイルやURLの形式チェックなど、Javaでの文字列操作が安全かつ効率的に行えます。
2. startsWith、endsWithメソッドとは何か、どのような場面で使うか
JavaのstartsWith()は、文字列が指定した文字列で始まるかどうかを判定するメソッドです。同様にendsWith()は、文字列が指定した文字列で終わるかどうかを判定します。どちらもboolean型を返すため、条件分岐に使いやすいです。
例えば、Javaでファイル名が".txt"で終わるかどうか確認する場合は次のように書きます。
public class FileCheckExample {
public static void main(String[] args) {
String fileName = "document.txt";
boolean isTextFile = fileName.endsWith(".txt");
System.out.println(isTextFile);
}
}
true
同様に、URLが"https"で始まるかチェックする場合は次の通りです。
public class UrlCheckExample {
public static void main(String[] args) {
String url = "https://example.com";
boolean isSecure = url.startsWith("https");
System.out.println(isSecure);
}
}
true
このように、Javaでは文字列の先頭や末尾を確認するだけで条件判定が簡単に行えます。startsWithやendsWithを覚えておくと、Javaでの文字列操作や文字列チェックの幅が広がります。
3. startsWithとendsWithの基本的な使い方(文字列の部分一致、大小文字の注意点)
JavaのstartsWith()とendsWith()は部分一致で判定を行います。文字列の先頭や末尾が指定した文字列と一致すればtrue、一致しなければfalseが返ります。注意点として、Javaの文字列操作は大文字小文字を区別するため、「Java」と「java」は別物として扱われます。
public class CaseExample {
public static void main(String[] args) {
String text = "HelloJavaWorld.txt";
boolean starts = text.startsWith("Hello");
boolean ends = text.endsWith(".TXT");
System.out.println(starts);
System.out.println(ends);
}
}
true
false
この例では、先頭の"Hello"は一致するためtrueですが、末尾の".TXT"は大文字が違うためfalseが返ります。Javaで文字列チェックを行う場合は、大小文字に注意することが重要です。
4. 複数の条件で文字列の始まりや終わりをチェックする方法
Javaでは、複数の文字列条件を組み合わせてチェックすることが可能です。例えば、ファイル名が特定の拡張子で終わり、かつ特定の接頭辞で始まるかを確認する場合、論理演算子を使って複数条件を組み合わせます。
public class MultipleCheckExample {
public static void main(String[] args) {
String fileName = "report2025.txt";
boolean starts = fileName.startsWith("report");
boolean ends = fileName.endsWith(".txt");
if(starts && ends) {
System.out.println("ファイル名が正しい形式です");
} else {
System.out.println("ファイル名が不正です");
}
}
}
ファイル名が正しい形式です
このように、JavaのstartsWith()とendsWith()を組み合わせることで、複雑な条件チェックも簡単に実装できます。文字列操作の際には、条件を明確にしておくことでコードが読みやすくなります。
5. startsWith、endsWithと他の文字列検索メソッドとの違い(containsやindexOf)
Javaには文字列検索のメソッドがいくつかあります。contains()は部分一致で文字列が含まれるかどうかを判定します。indexOf()は文字列の位置を返すメソッドです。startsWith()やendsWith()は、文字列の先頭や末尾だけを判定する点で特徴があります。
public class CompareMethodsExample {
public static void main(String[] args) {
String text = "JavaTutorial.txt";
boolean startResult = text.startsWith("Java");
boolean endResult = text.endsWith(".txt");
boolean containsResult = text.contains("Tutorial");
int indexResult = text.indexOf("Tutorial");
System.out.println(startResult);
System.out.println(endResult);
System.out.println(containsResult);
System.out.println(indexResult);
}
}
true
true
true
4
この例では、Javaの文字列操作において、startsWithやendsWithは先頭や末尾のチェック、containsは部分文字列の有無、indexOfは位置情報を取得するために使えることがわかります。用途に応じてメソッドを使い分けることで、Javaでの文字列チェックが効率的になります。
6. startsWithとendsWithを使う際の注意点(nullや空文字、パフォーマンス)
JavaでstartsWith()やendsWith()を使用する際、いくつかの注意点があります。まず、対象の文字列がnullの場合、これらのメソッドを呼び出すとNullPointerExceptionが発生します。そのため、文字列チェックを行う前に、必ずnullかどうかを確認することが重要です。また、空文字列を渡した場合、startsWith("")やendsWith("")は常にtrueを返すことにも注意が必要です。
public class NullCheckExample {
public static void main(String[] args) {
String text = null;
if(text != null && text.startsWith("Hello")) {
System.out.println("文字列はHelloで始まります");
} else {
System.out.println("文字列がnullかHelloで始まりません");
}
}
}
文字列がnullかHelloで始まりません
さらに、非常に長い文字列や頻繁なチェックを行う場合、パフォーマンスにも注意が必要です。Javaでは文字列は不変のため、繰り返し操作を行うと一時オブジェクトが生成され、処理速度に影響する場合があります。大量データを扱う際には、必要最低限のチェックを行うよう工夫するとよいでしょう。
7. startsWith、endsWithを活用した実用例(フォーム入力チェック、ログ出力など)
JavaのstartsWith()とendsWith()は、実際の開発でも非常に便利に使えます。例えば、ユーザーが入力したメールアドレスが正しいドメインで終わるかをチェックする場合や、ログ出力の際に特定の文字列で始まるメッセージだけをフィルタリングする場合です。
public class EmailCheckExample {
public static void main(String[] args) {
String email = "user@example.com";
if(email.endsWith("@example.com")) {
System.out.println("正しいドメインです");
} else {
System.out.println("ドメインが正しくありません");
}
}
}
正しいドメインです
また、ファイル操作やログ分析でも活用できます。例えば、ログファイルから「ERROR」で始まる行だけを抽出して処理する場合、Javaの文字列チェックを使うと簡単にフィルタリング可能です。
public class LogFilterExample {
public static void main(String[] args) {
String log = "ERROR: サーバーに接続できません";
if(log.startsWith("ERROR")) {
System.out.println("エラーログを処理します: " + log);
}
}
}
エラーログを処理します: ERROR: サーバーに接続できません
このように、Javaの文字列操作でstartsWithやendsWithを活用することで、フォーム入力チェックやログ出力など、日常的なプログラム処理が簡単かつ安全に行えます。
8. 初心者が知っておくと便利な補足情報(応用ポイントや便利な組み合わせ)
JavaでのstartsWith()やendsWith()は、他の文字列操作メソッドと組み合わせるとさらに便利になります。例えば、文字列を小文字に変換してから判定することで、大文字小文字の違いを無視したチェックが可能です。
public class CaseInsensitiveExample {
public static void main(String[] args) {
String text = "HelloJavaWorld.txt";
boolean starts = text.toLowerCase().startsWith("hello");
boolean ends = text.toLowerCase().endsWith(".txt");
System.out.println(starts);
System.out.println(ends);
}
}
true
true
また、Javaの文字列操作では、複数のメソッドを組み合わせて条件分岐をより柔軟にすることができます。例えば、startsWithやendsWithにcontainsを組み合わせることで、先頭・末尾のチェックだけでなく部分文字列の存在も同時に確認できます。
public class CombinedCheckExample {
public static void main(String[] args) {
String text = "HelloJavaWorld.txt";
if(text.startsWith("Hello") && text.endsWith(".txt") && text.contains("Java")) {
System.out.println("文字列の条件をすべて満たしています");
}
}
}
文字列の条件をすべて満たしています
このように、Javaでの文字列チェックは応用が利きやすく、複雑な条件判定も簡単に書けます。初心者はまず基本的な使い方をしっかり理解し、条件を組み合わせるテクニックを覚えると、Javaでの文字列操作がより効率的に行えるようになります。