从逗号分隔的字符串javascript中删除空值

时间:2013-09-22 06:35:12

标签: javascript jquery regex

如何从JavaScript / jQuery中的逗号分隔字符串中删除空值?

是否有直接的方法,或者我是否需要循环并手动删除它们?

有没有办法合并JavaScript / jQuery中的所有拆分(str和str1)?

CODE:

var str = '+ a + "|" + b';
var str1 = '+ a + "-" + b';

str = str.split("+").join(",").split('"|"').join(",");
str1 = str1.split("+").join(",").split('"-"').join(",");
console.log(str); //, a , , , b
console.log(str1); //, a , , , b

预期输出

a,b

帮助将不胜感激:)

3 个答案:

答案 0 :(得分:2)

在我看来,你想从字符串的开头和结尾删除+"|""-"和空格,并希望用字符串替换字符串中的空格单个逗号。这是三个正则表达式:

str = str.replace(/^(?:[\s+]|"[|-]")+/, '')
         .replace(/(?:[\s+]|"[|-]")+$/, '')
         .replace(/(?:[\s+]|"[|-]")+/g, ',');

(?:[\s+]|"[|-]")匹配空格或加号,或"|""-"。最后+重复一次或多次。在第一个表达式中,我们anchor匹配字符串的开头并将其替换为空(即删除它)。在第二个表达式中,我们将匹配锚定到字符串的末尾并将其删除。在第三个中,没有锚,因为剩下的所有匹配必须在字符串中的某个位置 - 我们用,替换它们。注意最后一个表达式的g修饰符 - 没有它,只会替换第一个匹配项。

答案 1 :(得分:1)

另一个答案很有用,可能正是您所寻找的。

如果由于某种原因,您仍然想使用split,幸运的是该方法也将正则表达式作为分隔符:

str = str.split(/\s*\+\s*(?:"\|"\s*\+\s*)?/).slice(1).join(",");

str1 = str1.split(/\s*\+\s*(?:"-"\s*\+\s*)?/).slice(1).join(",");

因为在“a”前面有一个加号,所以可以对数组进行切片以仅返回其后的元素。

此外,既然你提到你是正则表达式的新手,这里有解释:

  • 任何数量的空间
  • 加号
  • 任何数量的空间
  • 可选(因为组之后的?,即括号):非捕获(即?:含义的)组包含:
    • "|"
    • 任何数量的空间
    • 另一个加号
    • 任何数量的空间

答案 2 :(得分:1)

完美无缺:     str.split(/ [,] + /)。filter(function(v){return v!==''})。join(',')