2016-07-20 9 views
0

私は文字列をdata.replaceに置き換えようとしています。ハードコードや静的な値を使用している場合は問題ありません。しかし、今私は複数の値をループで置き換えたいが、それは動作しません。jQueryは変数が動作しないで置き換えます

マイコード:

Array [ "hid_1", "hid_2", "hid_6", "hid_7" ] 

をし、私のデータは次のとおりです:

for(var i = 0; i<words.length; i++){ 
    var r = words[i]; 
    data = data.replace(/\[(\[qid:{r})\]]/g, words[i]); 
} 

言葉が含まれてい

Site: [[qid:hid_1]]<br> 

Block: [[qid:hid_2]]<br> 

Nimewo kay la: [[qid:hid_6]]<br> 

Latitude: [[qid:hid_7]] 

そのHTMLコンテンツ。

私はちょうどここに変数が必要になります。

for(var i = 0; i<words.length; i++){ 

     var r = words[i]; 
     data = data.replace(/\[(\[qid:hid_1)\]]/g, 'test'); 
       //data.replace(/\[(\[qid:{r})\]]/g, 'test'); 

    } 
+0

、あなたはどのような出力を期待していますか? –

+0

Expecting:状態:hid_1 ブロック:hid_2 –

+0

各反復で同じ正規表現を使用しているように見えるので、それぞれが最初の単語に置き換えられます。 – nnnnnn

答えて

1
var words = [ "hid_1", "hid_2", "hid_6", "hid_7" ]; 

var data = "Site: [[qid:hid_1]]<br>\ 
Block: [[qid:hid_2]]<br>\ 
Nimewo kay la: [[qid:hid_6]]<br>\ 
Latitude: [[qid:hid_7]]"; 

for(var i = 0; i<words.length; i++){ 
     var r = words[i]; 
     var reg = new RegExp('\\[\\[qid:' + r +'\\]\\]'); 
     data = data.replace(reg, r); 
} 
+0

WOW ....素晴らしい...感謝です.. !!! –

0

は、あなたが何をしているか、このですか?いいですね。

data =["Site: [[qid:hid_1]]", 
"Block: [[qid:hid_2]]<br>", 
"Nimewo kay la: [[qid:hid_6]]", 
"Latitude: [[qid:hid_7]]" ]; 

var words = [ "hid_1", "hid_2", "hid_6", "hid_7" ]; 
for(var i = 0; i<words.length; i++){ 

    var r = data[i]; 
    r = r.replace(/\[(\[qid:\w+)\]]/g, words[i]); 
    console.log(r); 

} 
+0

置き換えられた値でコンテンツ全体が必要です。 ... –

+0

私の編集した質問をチェックしてください。 –

+0

それを分割して、再び参加してください... – anchreg

1

あなたは属していない文字を削除することができます。次に、他の配列の置換文字列は必要ありません。

EDIT

あなたのデータは1つの長い文字列である場合は、次の操作を実行できます

var data = 'Site: [[qid:hid_1]]<br> Block: [[qid:hid_2]]<br> Nimewo kay la: [[qid:hid_6]]<br> Latitude: [[qid:hid_7]]'; 
 

 
data = data.replace(/\[\[qid:(.*?)]](?:<br>)?/g, '$1'); 
 

 
console.log(data);


そうでない場合は、あなたのデータは、アレイ内にある場合これを行うことができます:

var strings = [ 
 
    'Site: [[qid:hid_1]]<br>', 
 
    'Block: [[qid:hid_2]]<br>', 
 
    'Nimewo kay la: [[qid:hid_6]]<br>', 
 
    'Latitude: [[qid:hid_7]]' 
 
]; 
 

 
strings = strings.map(function(string) { 
 
    return string.replace(/\[.*?:([^\]]*).*/, '$1') 
 
}); 
 

 
console.log(strings);

+0

私はあなたの仕事を尊敬しますが、これは必要ではありませんでした。ただ、検索されたコンテンツをdata.replace(/ \ [(\ [qid:hid_1] \]]/g、 'test' 参照:data.replace(/ \ [(\ [qid:hid_1] \]]/g、 'test');したい:data.replace(/ \ [(\ [qid:{r})\]]/g、 'test'); ここで "r"はhid_1、hid_2などを含む変数で、データ内のtest..meansと置き換えたいだけです。私はちょうど変数{r}を配置したいので、ループ内の文字列を変更することができます...ありがとう –

関連する問題