📑
[Javascript]~を含むかのチェック
1.matchを使う方法
str.match(/文字列/)で、文字列が含まれれば配列、文字列が含まれなければnullが返ることを利用する。
if (str.match(/hoge/)) {
//strにhogeを含む場合の処理
}
2.indexOfを使う方法
str.indexOf(文字列)で、文字列が見つかれば文字列が見つかった場所(0以上)、文字列が見つからなければ-1が返ることを利用する。
返り値!=-1
if (str.indexOf('hoge') != -1) {
//strにhogeを含む場合の処理
}
ビット反転演算子
if (~str.indexOf('hoge')) {
//strにhogeを含む場合の処理
}
ビット反転演算子の解説
文字列が見つからない場合、indexOfが-1を返す。-1をビット反転演算子にかけると、0が返る。
if文では、0が真と判定される。
※ビット反転演算子
整数をビット反転演算子にかけると、符号を反転してマイナス1した数になる。
例)
~1 → -2
~-1 → 0
~0 → -1
配列に特定要素が含まれるか
- Arrayオブジェクトの includesメソッド indexOfメソッド が利用できます。
const arr = [40, 30, 20, 10];
if (arr.indexOf(20) !== -1) {
console.log(arr.indexOf(20));
console.log('存在します');
}
if (arr.indexOf(50) === -1) {
console.log(arr.indexOf(50));
console.log('存在しません');
}
console.log('----------------------------------------');
if (arr.includes(20)) {
console.log(arr.includes(20));
console.log('存在します');
}
if (!arr.includes(50)) {
console.log(arr.includes(50));
console.log('存在しません');
}
実行結果
2
存在します
-1
存在しません
----------------------------------------
true
存在します
false
存在しません
文字列内に特定文字列が含まれるか
indexOf と includes を比較
- indexOf と includes の判定処理を比較します。
const str1 = 'xxxabcxxx';
const str2 = 'abc';
if (str1.indexOf(str2) !== -1) {
console.log(str1.indexOf(str2));
console.log('存在します');
}
console.log('----------------------------------------');
if (str1.includes(str2)) {
console.log(str1.includes(str2));
console.log('存在します');
}
実行結果
3
存在します
----------------------------------------
true
存在します
- true false で結果を返す includesメソッド のほうがスッキリとした判定処理になる。
includes と test を比較
- includes と test の判定処理を比較します。
複数条件の時
const str1 = 'xxxdefxxx';
const str2 = 'abc';
const str3 = 'def';
const regexp = /abc|def/g;
if (str1.includes(str2) || str1.includes(str3)) {
console.log('存在します');
}
console.log('----------------------------------------');
if (regexp.test(str1)) {
console.log('存在します');
}
実行結果
存在します
----------------------------------------
存在します
- testメソッド のほうがスッキリとした判定処理になる。
大文字小文字を区別したくないとき
const str1 = 'xxxABCxxx';
const str2 = 'abc';
const regexp = /abc/gi;
console.log(str1.includes(str2)); // false
console.log(regexp.test(str1)); // true
- includesメソッド の場合、大文字小文字を区別する。
- なので、区別しないようにしたいときは testメソッドを利用する。
参考
Discussion