web-dev-qa-db-fra.com

Remplacer plusieurs espaces par un seul espace dans une chaîne JavaScript

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

186
eve

Quelque chose comme ça:

var s = "  a  b     c  ";

console.log(
  s.replace(/\s+/g, ' ')
)
357
bjornd

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();
61
gui pn

en utilisant une expression régulière avec la fonction replace, le tour est joué:

string.replace(/\s/g, "")
20
Roger Gajraj

Voici une solution non regex (juste pour le fun):

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.

13
vsync

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é.

12
Spudley

jQuery.trim () fonctionne bien.

http://api.jquery.com/jQuery.trim/

8
chug2k

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:

  • Je veux remplacer plusieurs occurrences de blancs dans la chaîne par un seul espace
  • ... et ... je ne veux pas d'espaces au début ou à la fin de la chaîne

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.

7
Markku Uttula

var x = "Test Test Test" .split ("") .join (""); alerte (x);

4

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

1
user3413723

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, ' ').

1
Richard Vergis

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;
        }
    }
});
  • créer une fonction JQuery.
  • c'est l'événement presse clé.
  • Initialiser une variable.
  • Donner la condition pour correspondre au personnage
  • afficher un message d'alerte pour votre condition correspondante.
0
Abhijit BIswas