JavaScript 部分文字列チェック方法
JavaScript で文字列中に部分文字列が含まれるかチェックする方法
JavaScript では、文字列中に特定の部分文字列が含まれるかどうかを調べるために、主に次の 2 つの方法が使用されます。
includes() メソッド
- 使用例:
- 文字列が部分文字列を含む場合、
true
を返します。含まない場合はfalse
を返します。
const str = "これはサンプル文字列です";
const substr = "サンプル";
if (str.includes(substr)) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
indexOf() メソッド
- 部分文字列が見つかった場合、その開始インデックスを返します。見つからない場合は
-1
を返します。
const str = "これはサンプル文字列です";
const substr = "文字列";
if (str.indexOf(substr) !== -1) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
詳細解説
- 部分文字列が存在するかどうかのみを確認する場合に適しています。
- シンプルで読みやすい構文です。
- 柔軟性がありますが、少し冗長な条件式が必要になります。
- 部分文字列の位置を取得したい場合に使用できます。
どちらを使うべきか?
- 部分文字列の位置が必要な場合や、他の処理でインデックス情報を利用する場合は、
indexOf()
メソッドを使用します。 - 一般的には、
includes()
メソッドが推奨されます。シンプルで読みやすく、目的の確認に十分な場合が多いです。
備考
- 大文字小文字を無視したい場合は、文字列をすべて小文字または大文字に変換してから比較します。
- 両メソッドとも大文字小文字を区別します。
例題
次の文字列において、「世界」という部分文字列が含まれているかどうかをチェックしてください。
const str = "こんにちは、世界!";
解答
if (str.includes("世界")) {
console.log("「世界」が含まれています");
} else {
console.log("「世界」が含まれていません");
}
JavaScript で部分文字列が含まれるかチェックするコード例の詳細解説
const str = "これはサンプル文字列です";
const substr = "サンプル";
if (str.includes(substr)) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
- if 文
- str.includes(substr)
str
という文字列の中に、substr
という部分文字列が含まれているかどうかを調べます。- 含まれていれば
true
、含まれていなければfalse
を返します。
const str = "これはサンプル文字列です";
const substr = "文字列";
if (str.indexOf(substr) !== -1) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
- if (str.indexOf(substr) !== -1)
indexOf()
の戻り値が-1
でない(つまり、部分文字列が見つかった)場合にtrue
となり、if
文のブロックが実行されます。
- str.indexOf(substr)
str
という文字列の中で、substr
が最初に現れる位置のインデックスを返します。- 見つからなければ
-1
を返します。
- indexOf() メソッド
- 部分文字列の位置を知りたい場合や、より柔軟な処理を行いたい場合に適しています。
- 戻り値がインデックス番号であるため、部分文字列の位置を基にした処理を行うことができます。
- includes() メソッド
- シンプルで読みやすく、部分文字列が含まれているかどうかを判定するだけの場合は、こちらがおすすめです。
- 戻り値が
true
かfalse
のどちらかであるため、条件分岐が簡単です。
- 大文字小文字
- 上記の例では、大文字小文字を区別して検索しています。
- 例:
str.toLowerCase().includes(substr.toLowerCase())
JavaScript で文字列中に部分文字列が含まれているかどうかを調べるには、includes()
メソッドと indexOf()
メソッドの2つの方法があります。どちらを使うかは、目的や状況に応じて適切な方を選びましょう。
ポイント
- どちらのメソッドも、大文字小文字を区別する。
indexOf()
は、部分文字列が見つかった位置のインデックスを返す。includes()
は、部分文字列の存在を真偽値で返す。
正規表現を使う方法
正規表現は、文字列のパターンマッチングに非常に強力なツールです。部分文字列の有無を調べる際にも、柔軟な検索が可能になります。
const str = "これはサンプル文字列です";
const substr = "サンプル";
const regex = new RegExp(substr);
if (regex.test(str)) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
- regex.test(str)
str
がregex
のパターンにマッチするかを調べます。 - new RegExp(substr)
substr
をパターンとして持つ正規表現オブジェクトを作成します。
正規表現を使うメリット
- グローバル検索、複数行検索など、高度な機能を利用できる
- より複雑なパターンマッチングが可能
search()
メソッドを使う方法
search()
メソッドは、指定された文字列が最初に現れるインデックスを返します。indexOf()
と似ていますが、正規表現を受け取れる点が異なります。
const str = "これはサンプル文字列です";
const substr = "サンプル";
const index = str.search(substr);
if (index !== -1) {
console.log("部分文字列が含まれています");
} else {
console.log("部分文字列が含まれていません");
}
- 正規表現を用いた検索が可能
indexOf()
と同様にインデックスを取得できる
match()
メソッドは、文字列から指定された正規表現にマッチする部分文字列の配列を返します。
const str = "これはサンプル文字列です。もう一つのサンプル";
const substr = "サンプル";
const matches = str.match(new RegExp(substr, 'g'));
if (matches) {
console.log("部分文字列が含まれています");
console.log("マッチした回数:", matches.length);
} else {
console.log("部分文字列が含まれていません");
}
- 'g' フラグ
全てのマッチを検索する
- 正規表現のグループ化機能を利用できる
- 全てのマッチを一度に取得できる
どの方法を選ぶべきか
- 全てのマッチを取得したい
match()
- インデックスを取得したい
indexOf()
,search()
- 正規表現を使った高度な検索
RegExp.test()
,search()
,match()
- シンプルに判定したい
includes()
JavaScript で部分文字列が含まれるかチェックする方法は、includes()
, indexOf()
, search()
, match()
、正規表現など、様々な方法があります。それぞれの方法に特徴があり、状況に応じて使い分けることが重要です。
- ES6 以降
includes()
は ES6 で導入されました。古い環境では利用できない場合があります。 - 可読性
includes()
はシンプルで読みやすいですが、正規表現は複雑なパターンマッチングには強力です。 - パフォーマンス
一般的に、includes()
が最も高速です。
const text = "apple, banana, orange";
const searchWord = "an";
// includes()
console.log(text.includes(searchWord)); // true
// indexOf()
console.log(text.indexOf(searchWord)); // 1
// search()
console.log(text.search(searchWord)); // 1
// match()
console.log(text.match(new RegExp(searchWord, 'g'))); // ["an", "an"]
javascript string substring