質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1809閲覧

JavaScriptの変数とループを用いたreplace()の処理

orange377

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/12/04 03:15

編集2017/12/04 04:03

配列に含まれる値すべてを別のTextでreplaceしたいです。
配列だと想定通りに動作しないのですが、どのようにすればいいのでしょうか。

JavaScript

1// 通常の文字列 2let newText = ''; 3const text = '㌘'; 4let regExp = new RegExp('㌘', "g"); 5newText = text.replace(regExp, 'aaaa'); 6console.log('1st:' + newText); 7 8// 配列から 9const textArr = ['㌘', 'a', 'b']; 10textArr.forEach((item) =>{ 11 console.log(item); 12 regExp = new RegExp(item, "g"); 13 newText = text.replace(regExp, 'aaaa'); 14}) 15console.log('2nd:' + newText);

結果は以下です。

1st:aaaa ㌘ a b 2nd:㌘

追記

すみません、情報が不足しておりました。
配列に含まれるものをすべて'aaaa'に置換したいという要件でした。

例でいうと期待する結果は
2nd:aaaa
です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/12/04 03:36 編集

どういう結果を期待したのか不明です。個々の置換結果を見たいのなら、console.log('2nd:' + newText);をループの中に入れないと。
guest

回答3

0

ベストアンサー

具体的に期待する結果とそのロジックはなんでしょう?
文字列'㌘'が配列の['㌘', 'a', 'b']のいずれかにヒットしたとき
aaaaに変わればいいのでしょうか?

javascript

1var textArr = ['㌘', 'a', 'b']; 2var reg = new RegExp("["+textArr.join()+"]","g"); 3var newText = text.replace(reg, 'aaaa'); 4console.log(newText);

二文字以上のヒットを想定するとこう

javascript

1var text = 'abcaabacbca'; 2var textArr = ['ab', 'ac']; 3var reg = new RegExp("("+textArr.join("|")+")","g"); 4var newText = text.replace(reg, 'xy'); 5console.log(newText);

投稿2017/12/04 03:27

編集2017/12/04 03:35
yambejp

総合スコア114814

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orange377

2017/12/04 04:07

まさにそれです! 要件をきちんと示せず申し訳なかったです。 察していただき感謝です。
guest

0

もしかして、こういうことがしたかったんでしょうか?

JavaScript

1// 通常の文字列 2let newText = ''; 3const text = '㌘'; 4let regExp = new RegExp('㌘', "g"); 5newText = text.replace(regExp, 'aaaa'); 6console.log('1st:' + newText); 7 8// 配列から 9newText = text; 10const textArr = ['㌘', 'a', 'b']; 11textArr.forEach((item) =>{ 12 console.log(item); 13 regExp = new RegExp(item, "g"); 14 newText = newText.replace(regExp, 'aaaa'); 15}) 16console.log('2nd:' + newText);

が一旦aaaaになって、それぞれのaがまた4つになるので16個のaになりますね。

投稿2017/12/04 03:45

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orange377

2017/12/04 04:06

すみません、要件が不足しておりました。 回答ありがとうございました。
guest

0

昔、translateByArray() という関数を作ったことがあります。

(2017/12/04 12:51追記)
要件を勘違いしている気がしてきましたので、配列を置換するコードを書いておきます。

JavaScript

1['㌘', 'a', 'b'].map(v => v === '㌘' ? 'aaaa' : v); // ["aaaa", "a", "b"]

Re: orange377 さん

投稿2017/12/04 03:39

編集2017/12/04 03:52
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orange377

2017/12/04 04:06

すみません、要件が不足しておりました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問