2016-09-21 37 views
0

我試圖替換字符串數組中的字符。Javascript替換數組中的元素的字符

到目前爲止我有此:

stuff= ["uyuuyu", "76gyuhj***", "uiyghj", "56tyg", "juijjujh***"]; 

for(var i = 0; i < stuff.length; i++) 
{ 
    if(stuff[i].indexOf('***') != -1) 
    { 
     // this is where i guess the replacing would go 
    } 
} 

我想出,我可以使用這個代碼與陣列中元件可以顯示的字符***現在想用一個數字來替換***字符,以便它輸出一個新的陣列(相同陣列,但修改),看起來像:

stuff= ["uyuuyu", "76gyuhj0", "uiyghj", "56tyg", "juijjujh0"]; 

我似乎無法弄清楚如何在這個數組中替換字符,而不影響陣列的其餘部分

+1

數量是如何確定的(它總是0)?如何處理3個以上的星號? – raina77ow

+0

「影響陣列的其他部分」是什麼意思? –

+0

假設數字將始終爲0,總是會有3個星號。我應該更新進入後 – sourlemonaid

回答

5

如果要替換多次出現***,還可考慮.replace(/\*\*\*/g, '0')。 (下面的代碼只替換每個字符串中第一次出現。)

stuff= ["uyuuyu", "76gyuhj***", "uiyghj", "56tyg", "juijjujh***"]; 
 

 
for(var i = 0; i < stuff.length; i++) 
 
{ 
 
    stuff[i] = stuff[i].replace('***', '0'); 
 
} 
 

 
console.log(stuff);

注意,有沒有必要檢查indexOf。如果子串不存在,replace只是不會改變任何東西,所以你可以將replace應用於每個字符串。

+0

或者使用正則表達式和將取代每個''*** 0 - '東西[I] =東西[I] .replace(/(\ * \ * \ *)/克, '0');' – debute

0

這很簡單。使用替換功能來修改字符串

stuff= ["uyuuyu", "76gyuhj***", "uiyghj", "56tyg", "juijjujh***"]; 

for(var i = 0; i < stuff.length; i++) 
{ 
     stuff[i] = stuff[i].replace('***', ''); 
} 
+1

檢查更換前的狀況是多餘的。 –

+0

@Lucas Costa Ya你是對的。我修改了代碼 –

4

您可以使用JavaScript map如下

var newStuff =stuff.map(function(item,index){ 
    return item.replace('***','0') 

}); 



console.log(newStuff) //["uyuuyu", "76gyuhj0", "uiyghj", "56tyg", "juijjujh0"] 

ES2015(ES6)箭頭功能

var newStuff = stuff.map((item)=>item.replace('***','0')); 
+0

我真的很喜歡這種方式!謝謝。將接受不同的答案,因爲數組的名稱沒有改變。這對我想要做的事情有點更好。但我也會記下你的答案。從中學到了很多 – sourlemonaid

0
var stuff= ["uyuuyu", "76gyuhj***", "uiyghj", "56tyg", "juijjujh***"]; 

for(var i = 0; i < stuff.length; i++) 
{ 
    if(stuff[i].indexOf('***') != -1) 
{ 
     stuff[i] = stuff[i].replace('***','0') 
    // this is where i guess the replacing would go 
} 
console.log(stuff[i]); 
} 
+0

哈哈。你有太多的答案。享受:) –

+0

感謝您的答案! – sourlemonaid