我想删除所有"不必要的"字符串中的空格。具体做法是:
"a b c d" => "a b c d" // spaces between two words are left in
" a b c d " => "a b c d" // spaces not between two words are removed
"a b c d" => "a b c d" // as are duplicate spaces
有没有正则表达式我可以放入String.replace()
为我做这个?
答案 0 :(得分:5)
使用trim()
删除字符串末尾的空格,并使用regexp替换来替换中间的多个空格。
str = str.trim().replace(/\s{2,}/g, ' ');
答案 1 :(得分:3)
使用split
,filter
和join
。这将拆分字符串,过滤掉额外的空数组条目,然后用空格重新加入它们:
variable.split(" ").filter(Boolean).join(" ");
答案 2 :(得分:3)
这也适用于支持ES 3的浏览器。
function deleteUnwantedWhitespace (searchstring) {
searchstring = searchstring.trim().split(" ");
var tempArray = [];
for (var i = 0; i < searchstring.length; i++) {
if (searchstring[i]) {
tempArray.push(searchstring[i]);
}
}
return tempArray.join(" ");
}
编辑:我刚刚得知String.prototype.trim
是ES 5.1的一部分,所以这里是polyfill:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
答案 3 :(得分:1)
手动执行
var strArr = ["a b c d", " a b c d ", "a b c d"];
for (var i = 0; i < strArr.length; i++) {
console.log(removeSpaces(strArr[i]));
}
function removeSpaces(str) {
str = str.replace(/ +/g, ' ');
str = str.trim();
return str;
}
答案 4 :(得分:0)
完全可能。第一个正则表达式用一个空格替换1个或多个\s
个字符。这包括空格,制表符和换行符。
str.replace(/\s+/g, ' ');
如果您只想要空格,请使用
str.replace(/ +/g, ' ');
这也是使用Boolean
过滤器的more than 5x faster。