Eu tenho strings com espaços em branco extras, cada vez que há mais de um espaço em branco, eu gostaria que fosse apenas um.
Qualquer um? Eu tentei pesquisar no google, mas nada funcionou para mim.
obrigado
Eu tenho strings com espaços em branco extras, cada vez que há mais de um espaço em branco, eu gostaria que fosse apenas um.
Qualquer um? Eu tentei pesquisar no google, mas nada funcionou para mim.
obrigado
Respostas:
Algo assim:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Você pode aumentar a String para implementar esses comportamentos como métodos, como em:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Agora, agora você pode usar os seguintes formulários elegantes para produzir as seqüências desejadas:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
o uso de uma expressão regular com a função de substituição faz o truque:
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"
Ele divide a cadeia de caracteres por espaços em branco , remove todos os itens vazios da matriz (os que eram mais do que um único espaço) e junta todas as palavras novamente em uma cadeia de caracteres, com um único espaço em branco entre elas.
Presumo que você esteja procurando remover espaços do início e / ou final da string (em vez de remover todos os espaços?
Se for esse o caso, você precisará de uma regex como esta:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Isso removerá todos os espaços do início ou do fim da string. Se você deseja cortar apenas espaços a partir do final, a regex ficaria assim:
mystring = mystring.replace(/\s+$/g,' ');
Espero que ajude.
''
vez de ' '
.
jQuery.trim () funciona bem.
Eu sei que não devo necromancia sobre um assunto, mas, dados os detalhes da pergunta, eu geralmente a amplio para significar:
Para isso, uso um código como este (os parênteses no primeiro regexp existem apenas para tornar o código um pouco mais legível ... regexps pode ser uma dor, a menos que você esteja familiarizado com eles):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
A razão pela qual isso funciona é que os métodos no objeto String retornam um objeto string no qual você pode invocar outro método (assim como o jQuery e algumas outras bibliotecas). Forma muito mais compacta de codificar se você deseja executar vários métodos em um único objeto em sucessão.
var x = "Teste Teste Teste" .split ("") .join (""); alerta (x);
Tente isso.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
o resultado será
string 1
O que aconteceu aqui é que ele irá aparar os espaços externos primeiro usando e trim()
depois os espaços internos usando .replace(/\s+/g, ' ')
.
Se você deseja restringir o usuário a fornecer espaço em branco no nome, crie uma instrução if e forneça a condição. como eu fiz:
$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;
}
}
});
Que tal este?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
saídas "my test string with crazy stuff is cool "
Este se livra de todas as abas também
\s
. Regex desnecessariamente complexo, pode muito bem apenas escrever /\s+/g
.