2011-05-17 137 views
0

我有逗號分隔值的字符串:JavaScript字符串替換

var x = '1,2,10,11,12'; 

我需要刪除的Y中的價值。

x = remove(x,y); 

問:是否有一個功能已經或是否需要將其轉換爲一個數組,y移除,然後將其轉換回一個字符串?

回答

2

你可以做x.replace(y, "")。有關更多信息,請參閱Mozilla docs。從phpjs.org

+0

*只是*不夠,但這是一個有趣的起點 – 2011-05-17 17:02:08

+0

也許我不明白這個問題。你是否匹配字符串或y中的數值? – 2011-05-17 17:03:16

+0

請記住,對第一個參數使用字符串只會替換一次值。做'String.replace(/ value/g,「」);'會替換它的所有實例。 – 2011-05-17 17:10:37

0

str_replace analogon: http://phpjs.org/functions/str_replace:527

所以,你可以使用類似x=str_replace(y, '', x);;)或使用正則表達式實現它自己!

編輯:好的,我想我錯了。也許Greg的答案是正確的:-)

+2

PHP.js引起了我的陰謀,迷惑和厭惡,就像一個12歲的聊天室裏爭論宗教或蟑螂慢慢穿過我的布丁一樣。 – sdleihssirhc 2011-05-17 17:10:58

+1

-1用於推薦PHPjs。你不需要那個。只有用例是嚴格的截止日期和有才華的PHP開發人員(誰不知道JavaScript)。 – Raynos 2011-05-17 17:16:20

+0

好吧好吧,沒那麼糟^^ – tim 2011-05-17 17:27:34

1

假設你移除「Y」,其中y是一個索引,這樣做:

x = x.split(',').splice(y,1).join(','); 

編輯:

在這種情況下,我會使用正則表達式。如果你希望避免的正則表達式,另一種解決方案是可供選擇:

while(x.indexOf(y) >= 0){ 
x.replace(y+',', ''); 
} 

編輯:添加一個尾隨逗號替換,使得名單仍然是一個逗號分隔的列表。

+0

OP說'y'是一個值... – 2011-05-17 17:10:12

+0

y不是索引。 y是一個值。在這個例子中,它將是客戶ID或產品ID。 – 2011-05-17 17:12:32

1

你的意思是這樣嗎?

var arr = "1,2,1,2,3".split(","); 
var arr2 = []; 
for(var i = 0; i < arr.length; i++) { 
    if(arr[i] != "1") arr2.push(arr[i]) 
} 
arr2.join(","); // "2,2,3" 
+0

這是非常醜陋的代碼,我無法想象爲什麼你會用它來解決OP問題。 – GAgnew 2011-05-17 18:23:12

+0

爲什麼要聲明一個匿名字符串然後分割它?爲什麼你會使用第二個數組來複制每一個否定匹配,而不是僅僅刪除積極的匹配? – GAgnew 2011-05-17 18:28:32

+0

OP有一個字符串需要刪除某些元素,至少這是我的想法。我同意這不是最優雅的解決方案。 – pimvdb 2011-05-17 18:36:40

0

有三樣東西用逗號在字符串的開頭檢查

  1. y和隨後
  2. Ÿ一個詞休息preceeded和後跟一個逗號
  3. y在字符串的末尾,前面加逗號

    x.replace(new RegExp('((^|\\b)' + y + ',|,' + y +'$)'),'');