Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
文字列.startsWith() / endsWith() / matches()
文字列が特定の文字列で始まるか・終わるかを確認したり、正規表現パターンと一致するかどうかを検証したりするメソッドです。入力値のバリデーションや条件分岐に広く活用されます。
構文
// 指定した文字列で始まるかどうかを確認します。 文字列.startsWith(String prefix); 文字列.startsWith(String prefix, int toffset); // 指定した文字列で終わるかどうかを確認します。 文字列.endsWith(String suffix); // 正規表現パターンと一致するかどうかを確認します。 文字列.matches(String regex);
メソッド一覧
| メソッド | 概要 |
|---|---|
| startsWith(String prefix) | 文字列が指定したプレフィックスで始まる場合は true、そうでない場合は false を返します。 |
| startsWith(String prefix, int toffset) | 指定したオフセット位置から始まる部分文字列がプレフィックスと一致するかどうかを返します。 |
| endsWith(String suffix) | 文字列が指定したサフィックスで終わる場合は true、そうでない場合は false を返します。 |
| matches(String regex) | 文字列全体が正規表現パターンと一致する場合は true を返します。部分一致では false になります。 |
サンプルコード
// startsWith() で文字列の先頭を確認します。
String url = "https://wp-p.info";
System.out.println(url.startsWith("https")); // 『true』と出力されます。
System.out.println(url.startsWith("http://")); // 『false』と出力されます。
// endsWith() でファイルの拡張子を確認します。
String filename = "photo.jpg";
System.out.println(filename.endsWith(".jpg")); // 『true』と出力されます。
System.out.println(filename.endsWith(".png")); // 『false』と出力されます。
// matches() で数字のみの文字列かどうか確認します。
String num = "12345";
System.out.println(num.matches("[0-9]+")); // 『true』と出力されます。
// matches() はメールアドレスのバリデーションにも使えます。
String email = "user@example.com";
System.out.println(email.matches("^[\\w.+-]+@[\\w-]+\\.[\\w.]+$")); // 『true』と出力されます。
// startsWith() でオフセットを指定する例です。
String str = "JavaProgramming";
System.out.println(str.startsWith("Pro", 4)); // 『true』と出力されます。
概要
『startsWith()』と『endsWith()』はそれぞれ文字列の先頭・末尾が指定した文字列と一致するかどうかを確認するメソッドです。URLの判定やファイル拡張子のチェックなど、シンプルな条件分岐に適しています。
『matches()』は文字列全体が正規表現と一致するかどうかを確認します。『matches()』は文字列全体に対してマッチングを行うため、部分一致を確認したい場合は正規表現内にワイルドカード(.* など)を使う必要があります。また、呼び出しのたびにパターンをコンパイルするため、繰り返し使用する場合は Pattern.compile() でコンパイル済みパターンを使い回すと効率的です。
文字列の検索には『indexOf() / contains()』、文字列の置換には『replace() / replaceAll()』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。