在javascript中执行split()并忽略空白条目的最佳方法是什么?

leo*_*ora 7 javascript c# string jquery split

我有以下需要转换为javascript的C#代码:

    static private string[] ParseSemicolon(string fullString)
    {
        if (String.IsNullOrEmpty(fullString))
            return new string[] { };

        if (fullString.IndexOf(';') > -1)
        {
            return fullString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(str => str.Trim()).ToArray();
        }
        else
        {
            return new[] { fullString.Trim() };
        }
    }
Run Code Online (Sandbox Code Playgroud)

我看到javascript也有一个split()函数,但我想看看是否内置了对其他检查的支持,或者我必须在数组之后再做一个额外的循环来"清理"数据?

Mat*_*igh 8

您可以使用过滤器,但此功能仅在更新的浏览器中实现.

"dog;in;bin;;cats".split(";").filter(function (x) { return x != ""; });
Run Code Online (Sandbox Code Playgroud)


Jon*_*ski 7

您可以使用带有量词RegExp来拆分分隔符的任何连续计数:

var parts = input.split(/;+/);
Run Code Online (Sandbox Code Playgroud)

如:

var input = "foo;;;bar;;;;;;;;;baz";
var parts = input.split(/;+/);

console.log(parts);
// [ "foo", "bar", "baz" ]
Run Code Online (Sandbox Code Playgroud)


Aam*_*idi 5

尝试这个

"hello;aamir;;afridi".split(';').filter(Boolean)
Run Code Online (Sandbox Code Playgroud)

或者

"hello;;aamir;;;;afridi".split(';').filter(Boolean)
Run Code Online (Sandbox Code Playgroud)

结果是

["hello", "aamir", "afridi"]
Run Code Online (Sandbox Code Playgroud)

要将其转换回字符串,请使用此

"hello;aamir;;afridi".split(';').filter(Boolean).join(' ')
Run Code Online (Sandbox Code Playgroud)

或者

"hello;aamir;;afridi".split(';').filter(Boolean).join(';')
Run Code Online (Sandbox Code Playgroud)