【问题标题】:How to split string without getting empty values to the output array如何在不将空值发送到输出数组的情况下拆分字符串
【发布时间】:2016-03-26 01:54:07
【问题描述】:

我正在使用split 函数来拆分我的字符串/value/1

var value = "/value/1/";

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

结果我将得到一个包含 4 个元素“”、“值”、“1”、“”的数组; 但我真的需要输出数组中的非空值。 有没有办法根据我的输入字符串生成一个数组,但数组没有空白元素?

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

【问题讨论】:

  • var value = /value/1/; 不应使用反引号括住字符串,使用单引号或双引号。
  • 是的,这只是我的格式错误

标签: javascript arrays node.js string url


【解决方案1】:

尝试使用Array#filter

var arr = value.split("/").filter(function (part) { return !!part; });

或与 Tushar 建议的相同的较短版本。

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

【讨论】:

【解决方案2】:

您可以将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>');

【讨论】:

  • 最后两个参数...0, 4JSON.stringify() 中是什么意思?
  • @sreginogemoh 这些仅用于在页面上显示结果,参数用于格式化目的。您只能使用str.match(/[^\/]+/g); 代码来获取匹配项。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 2017-05-23
    • 2023-03-15
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多