你需要做的是取代的「空格和逗號」的所有組與一個逗號,然後從開始逗號和結束:
trimCommas = function(str) {
str = str.replace(/[,\s]*,[,\s]*/g, ",");
str = str.replace(/^,/, "");
str = str.replace(/,$/, "");
return str;
}
第一個替換的白色空間的每個序列和逗號和逗號,只要在那裏至少有一個逗號。這處理留在「Internet Explorer」註釋中的邊緣案例。
第二個和第三個在需要時在字符串的開始和結尾處刪除逗號。
您還可以添加(到最後):
str = str.replace(/[\s]+/, " ");
塌陷多空間下降到一個空間和
str = str.replace(/,/g, ", ");
,如果你希望他們以後每次(空間很好地格式化逗號)。
的更一般的解決辦法是將參數傳遞給指示行爲:
- 傳遞
true
爲collapse
將摺疊部分內的空間(截面被定義爲逗號之間的字符)。
- 通過
true
爲addSpace
將使用", "
分開部分,而不是自己的","
。
下面的代碼。對於您的特殊情況可能不需要,但對於其他代碼可能會更好。
trimCommas = function(str,collapse,addspace) {
str = str.replace(/[,\s]*,[,\s]*/g, ",").replace(/^,/, "").replace(/,$/, "");
if (collapse) {
str = str.replace(/[\s]+/, " ");
}
if (addspace) {
str = str.replace(/,/g, ", ");
}
return str;
}
有人投下了這個答案。你願意解釋嗎?乍看之下,我認爲它沒有問題。 – Boldewyn 2009-11-03 08:44:49
可能是因爲它似乎沒有處理字符串中的「,」,(如果可能的話)? – paxdiablo 2009-11-03 09:21:30
錯過了,對不起。修正了正則表達式來處理這個問題。 – 2009-11-03 09:28:13