J'ai des chaînes avec des espaces supplémentaires, chaque fois qu'il y a plus d'un seul espace, j'aimerais que ce soit un seul.
N'importe qui? J'ai essayé de chercher sur Google, mais rien n'a fonctionné pour moi.
Merci
J'ai des chaînes avec des espaces supplémentaires, chaque fois qu'il y a plus d'un seul espace, j'aimerais que ce soit un seul.
N'importe qui? J'ai essayé de chercher sur Google, mais rien n'a fonctionné pour moi.
Merci
Réponses:
Quelque chose comme ça:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Vous pouvez augmenter String pour implémenter ces comportements en tant que méthodes, comme dans:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Cela vous permet désormais d'utiliser les formes élégantes suivantes pour produire les chaînes souhaitées:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
l'utilisation d'une expression régulière avec la fonction replace fait l'affaire:
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"
Il divise la chaîne par des espaces , les supprime tous les éléments de tableau vides du tableau (ceux qui étaient plus d'un seul espace), et joint à nouveau tous les mots dans une chaîne, avec un seul espace entre eux.
Je suppose que vous cherchez à supprimer les espaces du début et / ou de la fin de la chaîne (plutôt que de supprimer tous les espaces?
Si tel est le cas, vous aurez besoin d'une expression régulière comme celle-ci:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Cela supprimera tous les espaces du début ou de la fin de la chaîne. Si vous voulez seulement couper les espaces à partir de la fin, alors l'expression régulière ressemblerait à ceci à la place:
mystring = mystring.replace(/\s+$/g,' ');
J'espère que cela pourra aider.
''
place de ' '
.
jQuery.trim () fonctionne bien.
Je sais que je ne devrais pas nécromancie sur un sujet, mais étant donné les détails de la question, je l'élargis généralement pour signifier:
Pour cela, j'utilise un code comme celui-ci (les parenthèses sur la première expression régulière sont là juste pour rendre le code un peu plus lisible ... les expressions régulières peuvent être pénibles à moins que vous ne les connaissiez):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
La raison pour laquelle cela fonctionne est que les méthodes sur String-object renvoient un objet string sur lequel vous pouvez invoquer une autre méthode (tout comme jQuery et certaines autres bibliothèques). Manière beaucoup plus compacte de coder si vous souhaitez exécuter plusieurs méthodes successivement sur un seul objet.
var x = "Test Test Test" .split ("") .join (""); alerte (x);
Essaye ça.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
le résultat sera
string 1
Ce qui s'est passé ici, c'est qu'il coupera d'abord les espaces extérieurs en utilisant, trim()
puis les espaces intérieurs en utilisant .replace(/\s+/g, ' ')
.
Si vous souhaitez restreindre l'utilisateur à donner un espace vide dans le nom, créez simplement une instruction if et indiquez la condition. comme j'ai fait:
$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;
}
}
});
Celui-ci, ça va?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
les sorties "my test string with crazy stuff is cool "
Celui-ci supprime également tous les onglets
\s
. Une regex inutilement complexe, pourrait tout aussi bien écrire /\s+/g
.