JavaScriptで文字列操作第四弾です。
今回は文字列の置換、検索についてまとめます。
1.replaceメソッド
「対象の文字列.replace( 置換前の文字列, 置換後の文字列 );」で文字列を置換します。
let str = "国語、算数、理科、社会、国語";
let result1 = str.replace("国語","英語");
console.log(result1);
// -> 英語、算数、理科、社会、国語
let result2 = str.replace("国語、","");
console.log(result2);
// -> 算数、理科、社会、国語
上記の書き方でははじめの「国語」しか「英語」に置換されませんが、正規表現を使うとすべての指定文字を置換できます。
let result3 = str.replace(/国語/g, "英語");
console.log(result3);
// -> 英語、算数、理科、社会、英語
また、複数の文字を変換する場合はメソッドチェーンを使います。
let result4 = str.replace(/国語/g, "英語").replace(/社会、/g, "");
console.log(result4);
// ->英語、算数、理科、英語
2.indexOfメソッド
2-1.「対象の文字列.indexOf( 検索したい文字列 );」で対象の文字列を先頭から検索し、検索したい文字列が最初に現れたインデックスを返します。
let str = "a whole new world!";
let result1 = str.indexOf("w");
console.log(result1);
// -> 2
let result2 = str.indexOf("W");
console.log(result2);
// -> -1
2-2.「対象の文字列.lastIndexOf( 検索したい文字列 );」で対象の文字列を先頭から検索し、検索したい文字列が最後に現れたインデックスを返します。
let str = "a whole new world!";
let result1 = str.lastIndexOf("w");
console.log(result1);
// -> 12
let result2 = str.lastIndexOf("W");
console.log(result2);
// -> -1
indexOfメソッドもlastindexOfメソッドも以下の戻り値を返します。
検索したい文字列を含む :インデックスを返す(0文字目から数えて何文字目に検索対象の文字があるか)
検索したい文字列を含まない:「-1」を返す
また、大文字と小文字を区別します。
検索したい文字列を含まない場合に「-1」が返ることを利用して以下のような条件分岐ができます。
if (str.indexOf("world") != -1) {
//strに「world」を含む場合の処理
}
参考:
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf