如何在不将空值输出到输出数组的情况下拆分字符串

时间:2015-12-19 13:09:18

标签: javascript arrays node.js string url

我使用split函数来分割字符串/value/1

var value = "/value/1/";

var arr = value.split("/");

结果我将得到一个包含4个元素的数组""," value"," 1","&#34 ;; 但我真的需要输出数组中的非空值。 有没有办法在我的输入字符串上生成数组,但是没有空格元素的数组?

我的字符串可能是/value/1/ /value/1 /value/ /value基本上我正在进行http request.url

3 个答案:

答案 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;
&#13;
&#13;

答案 2 :(得分:0)

如果您仍想使用字符串来匹配符号,可以尝试使用:RegExp("/", "g") - 但这不是最好的情况,如果您仍然希望不匹配转义符号\并提供一些您可以使用API​​ RegExp("[^\/]*", "g")/[^\/]*/g