我有带多余空格的字符串,每当有多个空格时,我希望它只有一个。
任何人?我尝试搜索Google,但没有任何帮助。
谢谢
我有带多余空格的字符串,每当有多个空格时,我希望它只有一个。
任何人?我尝试搜索Google,但没有任何帮助。
谢谢
Answers:
像这样:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
您可以扩展String以将这些行为实现为方法,如下所示:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
现在,您可以使用以下优雅的形式来生成所需的字符串:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
将正则表达式与replace函数配合使用可达到以下目的:
string.replace(/\s/g, "")
var s = ' a b word word. word, wordword word ';
// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"
// or ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"
它将字符串按空格分隔,从数组中删除所有空数组项(大于单个空格的项),然后将所有单词再次连接到字符串中,并在它们之间使用单个空格。
我假设您正在寻找从字符串的开头和/或结尾去除空格(而不是删除所有空格?
如果是这种情况,则需要这样的正则表达式:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
这将从字符串的开头或结尾删除所有空格。如果只想从末尾修剪空格,则正则表达式将改为如下所示:
mystring = mystring.replace(/\s+$/g,' ');
希望能有所帮助。
''
改为' '
。
我知道我不应该在某个主题上发表论文,但是鉴于问题的细节,我通常将其扩展为:
为此,我使用这样的代码(第一个regexp的括号是为了使代码更具可读性...除非您熟悉它们,否则regexp会很痛苦):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
这样做的原因是String对象上的方法返回一个字符串对象,您可以在该对象上调用另一个方法(就像jQuery和其他一些库一样)。如果要在单个对象上连续执行多个方法,则可以使用更紧凑的编码方式。
var x =“ Test Test Test” .split(“”).join(“”); 警报(x);
如果要限制用户在名称中提供空格,只需创建一个if语句并给出条件。像我一样:
$j('#fragment_key').bind({
keypress: function(e){
var key = e.keyCode;
var character = String.fromCharCode(key);
if(character.match( /[' ']/)) {
alert("Blank space is not allowed in the Name");
return false;
}
}
});
这个怎么样?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
输出 "my test string with crazy stuff is cool "
这个也摆脱任何标签
\s
。不必要复杂的正则表达式,不妨只写/\s+/g
。