我必须split()
将一个大字符串放入一个数组中,无论它工作的方式如何,我现在在每个元素之前留下一个空格。
例如:
var array = [" hello"," goodbye"," no"];
我怎样摆脱这个?
按要求拆分代码:
var depots = v.innerHTML.split(',');
答案 0 :(得分:9)
var array = [" hello"," goodbye"," no"];
array = array.map(function (el) {
return el.trim();
});
console.log(array);

如果您使用ES2015
,则可以使用箭头功能
array = array.map(el => el.trim());
答案 1 :(得分:3)
使用Array#map()
更改数组中的每个元素,以便在用分隔符拆分时从字符串本身中删除空格。
String#trim()
与String#split()
一起使用RegEx
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
正则表达式str.trim().split(/\s*,\s*/)
将匹配任意数字(包括零)空格所包围的逗号。
现场演示:
\s*,\s*
var regex = /\s*,\s*/;
document.getElementById('textbox').addEventListener('keyup', function() {
document.getElementById('result').innerHTML = JSON.stringify(this.value.trim().split(regex));
});
<input type="text" id="textbox" />
<pre id="result"></pre>
将从字符串中移除前导空格和尾随空格,trim()
将使用RegEx split
将字符串除以逗号后跟任意数量的空格。
使用带有全局标记的String#match
的否定RegEx也可以获得相同的结果。
,\s*
为什么不应该使用
str.match(/[^,\s]+/g)
?
在这种情况下使用map()
需要额外的开销。首先,map
字符串split
,然后遍历数组的每个元素,并使用,
删除前导和尾随空格,然后更新数组。这比使用以上RegEx的trim
慢一点。
答案 2 :(得分:0)
遍历每个数组元素并修剪它。如下所示
for (int i = 0; i < array.length; i++)
trimmedArray[i] = array[i].trim();
答案 3 :(得分:-3)
您需要这两个jQuery函数:
1。)迭代数组元素,具有编辑项目的能力: http://api.jquery.com/jquery.map/
2。)从字符串的开头和结尾删除空格: http://api.jquery.com/jQuery.trim/
以这种方式使用它们:
array = $.map(array, function(value) { return value.trim();});
检查此JSFiddle: https://jsfiddle.net/L00eyL4x/49/