JavaScriptの文字列に特定の文字が含まれるか判定する方法(includes, indexOf)
生徒
「先生、JavaScriptで文字列の中に特定の文字が含まれているかどうかを調べる方法ってありますか?」
先生
「うん、JavaScriptではincludes()メソッドやindexOf()メソッドを使うことで、簡単に文字列の中に特定の文字が含まれているかを判定できます。」
生徒
「名前が似ているけど、どう違うんですか?」
先生
「どちらも似た目的で使えるけど、使い方や返ってくる結果が少し違うんだ。ひとつずつ見ていこう。」
1. includesメソッドとは?
includes()メソッドは、指定した文字列が対象の文字列の中に含まれているかを確認するためのメソッドです。結果としてtrue(含まれている)またはfalse(含まれていない)を返します。
たとえば、メールアドレスの中に「@」があるかを確認したり、ユーザー名の中に禁止ワードが含まれていないかチェックしたいときに便利です。
const text = "JavaScriptを学ぼう!";
console.log(text.includes("Java")); // true
console.log(text.includes("Python")); // false
true
false
includes()メソッドは、大文字と小文字を区別します。つまり「Java」と「java」は違う文字列として扱われます。
const message = "Hello World";
console.log(message.includes("world")); // false(小文字なので一致しない)
false
もし大文字・小文字を区別せずに調べたい場合は、両方を同じケース(大文字または小文字)に変換してから調べましょう。
const message = "Hello World";
console.log(message.toLowerCase().includes("world")); // true
true
2. indexOfメソッドとは?
indexOf()メソッドは、指定した文字列が最初に現れる位置(インデックス番号)を返すメソッドです。もし見つからなければ-1を返します。
このメソッドは、特定の単語が「どこに」あるのかを知りたいときにも使えます。
const text = "JavaScriptを使って学ぶプログラミング";
console.log(text.indexOf("JavaScript")); // 0(先頭にある)
console.log(text.indexOf("プログラミング")); // 13(13文字目にある)
console.log(text.indexOf("Python")); // -1(含まれていない)
0
13
-1
indexOf()は、結果が-1でなければ含まれていると判断できます。
const text = "JavaScript入門";
if (text.indexOf("Script") !== -1) {
console.log("含まれています!");
}
含まれています!
3. includesとindexOfの違いを比較しよう
includes()はシンプルに「含まれているかどうか」をtrueかfalseで返すのに対し、indexOf()は「どの位置にあるか」を数値で返します。
| メソッド名 | 返り値 | 使い方の目的 |
|---|---|---|
includes() |
true / false |
文字列が含まれているかを判定 |
indexOf() |
位置(数値)または -1 |
どこにあるかを知りたいとき |
たとえば「検索キーワードが文章のどこに出てくるか」を調べたいならindexOf()を使い、単純に「含まれているかだけをチェックしたい」場合はincludes()が便利です。
4. 部分一致のチェックや応用例
これらのメソッドを使うと、フォーム入力のチェックやデータ検索など、実践的な場面で役立ちます。
たとえば、メールアドレスに「@」が含まれているかを確認する例です。
const email = "example@gmail.com";
if (email.includes("@")) {
console.log("正しいメールアドレスの形式です。");
} else {
console.log("メールアドレスに@が含まれていません。");
}
正しいメールアドレスの形式です。
また、禁止ワードを含むコメントを判定したい場合にも使えます。
const comment = "このサイトは最高!";
if (comment.indexOf("最悪") !== -1) {
console.log("不適切なコメントです。");
} else {
console.log("コメントを受け付けました。");
}
コメントを受け付けました。
このように、includes()とindexOf()はどちらも文字列のチェックに欠かせない基本メソッドです。特にWeb開発や入力チェックのような場面では頻繁に登場します。