ド素人です
下記のソースを実行すると
@〇〇の部分をchange@〇〇に変更します
最終的に「aaa change@ah change@a aaa」としたいのですが、
「aaa changechange@ah change@a aaa」となります
その原因は一度目のループで(@ahが対象)
@ahがchange@ahになり、
2度目のループで@aが対象となるが、一度目のchange@ahに@aが含まれてしまってるため、
changechange@ahになる
replaceAllを使う理由は何個出てきてもすべて置換するためです
わかりづらいかもしれませが、できる限りソースを書き換えないで
「aaa change@ah change@a aaa」にすることはできないでしょうか?
<script> window.onload=function(){ u=[]; s="aaa @ah @a aaa"; if(s.match(/(?<=@)[A-Z0-9]+/ig)){ r = s.match(/@[A-Z0-9]+/ig); for(i=0;i<r.length;i++){ if (!u.includes(r[i])) { alert(r[i]); s=s.replaceAll(r[i], "change"+r[i]); u.push(r[i]); } } } alert(s);////「aaa change@ah change@a aaa」を出したい } </script>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/27 00:07
2021/10/27 00:08
2021/10/27 00:11
2021/10/27 00:12
2021/10/27 00:15