在javascript中执行split()并忽略空白条目的最佳方法是什么?
本文关键字:空白 最佳 是什么 方法 执行 javascript split | 更新日期: 2023-09-27 17:50:32
我有以下c#代码,我需要转换为javascript:
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() };
}
}
我看到javascript也有一个split()函数,但我想看看是否有内置支持其他检查,或者我必须在数组周围做一个额外的循环,然后"清理"数据?
您可以使用filter,但此功能仅在较新的浏览器中实现。
"dog;in;bin;;cats".split(";").filter(function (x) { return x != ""; });
您可以使用带有量词的RegExp对任意连续的分隔符计数进行分割:
var parts = input.split(/;+/);
等:
var input = "foo;;;bar;;;;;;;;;baz";
var parts = input.split(/;+/);
console.log(parts);
// [ "foo", "bar", "baz" ]
试试这个
"hello;aamir;;afridi".split(';').filter(Boolean)
或
"hello;;aamir;;;;afridi".split(';').filter(Boolean)
在 搜索结果
["hello", "aamir", "afridi"]
要将其转换回字符串,使用
"hello;aamir;;afridi".split(';').filter(Boolean).join(' ')
或
"hello;aamir;;afridi".split(';').filter(Boolean).join(';')
不幸的是javascript split()不检查双空间等,你需要稍后清理你的数组
var str = "How;are;;you;my;;friend?";
var arr = str.split(";");
alert(arr);
http://jsfiddle.net/p58qm/2/你可以用这个循环
来更新数组len = arr.length, i;
for(i = 0; i < len; i++ )
arr[i] && arr.push(arr[i]); // copy non-empty values to the end of the array
arr.splice(0 , len);
alert(arr);
http://jsfiddle.net/p58qm/3/试试这个:
function parseSemicolon(fullString) {
var result = new Array();
if (!!fullString && fullString.length > 0) {
fullString = fullString.trim();
if (fullString.indexOf(';') > -1) {
result = fullString.split(';');
for (var i = 0; i < result.length; i++) {
result[i] = result[i].trim();
}
} else {
result = new Array(fullString);
}
}
return result;
}
Split也需要处理空结果。但是,
还有别的方法吗?http://jsfiddle.net/9mHug/1/var str = "aaa,bbb;ccc ddd , eee";
var sp = str.match(/'w+/g);
alert(sp);
这将为您提供一个仅包含单词的干净数组。'w
是一个正则表达式搜索,它将查找特定类型的所有字母[a-zA-Z0-9_]