replace()で置換を行ったことはあったので、似た文字列が混ざっている場合が難しかったので調べました。
以下は簡単な置換した際の記事です。
やりたいこと
以下の文字列があるとします。
「JavaとJavascriptはプログラミング言語です。Javascriptの方が簡単です」
これをreplaceAll()を使ってまとめて変換するとします。
let str = 'JavaとJavaScriptはプログラミング言語です。JavaScriptの方が簡単です。'
str = str.replace(/JavaScript/g, '"JavaScript"').replace(/Java/g, '"Java"');
console.log(str)
// "Java"と""Java"Script"はプログラミング言語です。""Java"Script"の方が簡単です。
上記のように、JavaScriptではJavaとJavaScriptの二つが置換されてしまいました。
解決策
かなり時間がかかりましたが、自分でも解決できずなんとかたどりついたMuhi Masriさんの記事に私の欲しい答えが載っていました。
function autoCorrect(text, correction) {
const reg = new RegExp(Object.keys(correction).join("|"), "g");
return text.replace(reg, (matched) => correction[matched]);
}
let str = "JavaとJavaScriptはプログラミング言語です。JavaScriptの方が簡単です。";
const correction = {
"JavaScript": "'JavaScript'",
"Java": "'Java'"
};
const correctedText = autoCorrect(str, correction);
console.log(correctedText);
// 'Java'と'JavaScript'はプログラミング言語です。'JavaScript'の方が簡単です。
綺麗にJavaとJavascriptが変換できています。
詳しい解説は本家の記事をご覧ください。
おわり
本当に助けられました。こういうかっこいいコードを自作できるようにもっと頑張らないといけないなと痛感しました。
参考元
https://muhimasri.com/blogs/how-to-replace-multiple-words-and-characters-in-javascript/