J'ai des chaînes avec des espaces blancs supplémentaires, chaque fois qu'il y a plus d'un espace blanc, j'aimerais qu'il en soit un.
N'importe qui? J'ai essayé de chercher sur google, mais rien n'a fonctionné pour moi.
Merci
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 maintenant d'utiliser les formes élégantes suivantes pour produire les chaînes que vous voulez:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
en utilisant une expression régulière avec la fonction replace, le tour est joué:
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 en espaces blancs, supprime tous les éléments de tableau vides du tableau (ceux qui étaient plus qu'un seul espace), et joint à nouveau tous les mots en une chaîne, avec un seul espace blanc 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 espaces?
Si c'est le cas, vous aurez besoin d'une expression régulière comme ceci:
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, l'expression rationnelle ressemblera à ceci:
mystring = mystring.replace(/\s+$/g,' ');
J'espère que ça t'as aidé.
jQuery.trim () fonctionne bien.
Je sais que je ne devrais pas être nécromancien sur un sujet, mais étant donné les détails de la question, je l’étend généralement pour dire:
Pour cela, j'utilise un code comme celui-ci (les parenthèses de la première expression rationnelle sont présentes dans le but de rendre le code un peu plus lisible ... les expressions rationnelles peuvent être pénibles si vous ne les connaissez pas bien):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Cela fonctionne parce que les méthodes sur String-object renvoient un objet string sur lequel vous pouvez appeler une autre méthode (tout comme jQuery et certaines autres bibliothèques). Un moyen beaucoup plus compact de coder si vous souhaitez exécuter plusieurs méthodes sur un même objet à la suite.
var x = "Test Test Test" .split ("") .join (""); alerte (x);
Celui-ci, ça va?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
sorties "my test string with crazy stuff is cool "
Celui-ci se débarrasse également des onglets
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 que les espaces extérieurs seront d'abord ajustés à l'aide de trim()
, puis ajustés à l'intérieur de .replace(/\s+/g, ' ')
.
Si vous souhaitez empêcher l'utilisateur de laisser un espace vide dans le nom, créez simplement une instruction if et donnez 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;
}
}
});