如何从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
帮助将不胜感激:)
答案 0 :(得分:2)
在我看来,你想从字符串的开头和结尾删除+
,"|"
,"-"
和空格,并希望用字符串替换字符串中的空格单个逗号。这是三个正则表达式:
str = str.replace(/^(?:[\s+]|"[|-]")+/, '')
.replace(/(?:[\s+]|"[|-]")+$/, '')
.replace(/(?:[\s+]|"[|-]")+/g, ',');
(?:[\s+]|"[|-]")
匹配空格或加号,或"|"
或"-"
。最后+
重复一次或多次。在第一个表达式中,我们anchor匹配字符串的开头并将其替换为空(即删除它)。在第二个表达式中,我们将匹配锚定到字符串的末尾并将其删除。在第三个中,没有锚,因为剩下的所有匹配必须在字符串中的某个位置 - 我们用,
替换它们。注意最后一个表达式的g
修饰符 - 没有它,只会替换第一个匹配项。
答案 1 :(得分:1)
另一个答案很有用,可能正是您所寻找的。 p>
如果由于某种原因,您仍然想使用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(',')