我使用split函数来分割字符串/value/1
var value = "/value/1/";
var arr = value.split("/");
结果我将得到一个包含4个元素的数组""," value"," 1","&#34 ;; 但我真的需要输出数组中的非空值。 有没有办法在我的输入字符串上生成数组,但是没有空格元素的数组?
我的字符串可能是/value/1/
/value/1
/value/
/value
基本上我正在进行http request.url
。
答案 0 :(得分:7)
尝试使用Array#filter
。
var arr = value.split("/").filter(function (part) { return !!part; });
或者与 Tushar 建议的相同的更短版本。
var arr = value.split("/").filter(Boolean);
答案 1 :(得分:6)
您可以将match
与正则表达式一起使用。
str.match(/[^\/]+/g);
正则表达式[^\/]+
将匹配任何非正斜杠的字符。
function getValues(str) {
return str.match(/[^\/]+/g);
}
document.write('<pre>');
document.write('<b>/value/1/</b><br />' + JSON.stringify(getValues('/value/1/'), 0, 4));
document.write('<br /><br /><b>/value/1</b><br />' + JSON.stringify(getValues('/value/1'), 0, 4));
document.write('<br /><br /><b>/value/</b><br />' + JSON.stringify(getValues('/value/'), 0, 4));
document.write('<br /><br /><b>/value</b><br />' + JSON.stringify(getValues('/value'), 0, 4));
document.write('</pre>');
&#13;
答案 2 :(得分:0)
如果您仍想使用字符串来匹配符号,可以尝试使用:RegExp("/", "g")
- 但这不是最好的情况,如果您仍然希望不匹配转义符号\
并提供一些您可以使用API RegExp("[^\/]*", "g")
或/[^\/]*/g