Supprimer les retours à la ligne dans une chaîne de caractères

J’ai un texte dans un textarea et je peux lire la valeur à l’aide de l’attribut .value.

J’aimerais maintenant supprimer tous les sauts de ligne (le caractère qui est produit lorsque vous appuyez sur Entrée) de mon texte en utilisant .replace avec une expression régulière, mais comment puis-je indiquer un saut de ligne dans une expression régulière ?

La façon de trouver un saut de ligne varie selon les systèmes d’exploitation. Windows serait \r\n, mais Linux utilise simplement \n et Apple utilise \r.

texte = texte.replace(/(\r\n|\n|\r)/gm, "");

Cela devrait permettre de supprimer toutes sortes de sauts de ligne.

Le RegExp le plus efficace pour correspondre à toutes les sauts de ligne est

/\r?\n|\r/

Si vous voulez trouver toutes les sauts de lignes d’une chaîne, utilisez une correspondance globale,

/\r?\n|\r/g

var str = " \n ceci est un text \n \n \n"

console.log(str);
console.log(str.trim());

Cela affiche:


 ceci est un text 
 
 
ceci est un text

String.trim() supprime les espaces blancs au début et à la fin des chaînes… y compris les retours a la ligne.

Vous pouvez utiliser \n dans une expression régulière pour les nouvelles lignes et \r pour les retours à la ligne.

var res = str.replace(/\n|\r/g, "");

Les différents systèmes d’exploitation utilisent des fins de ligne différentes, avec des mélanges variables de \n et \r. Cette expression régulière les remplacera toutes.

La solution la plus simple est la suivante :

let str = '\t\n\r ceci  \n \t   \r  est \r un   \n texte \t  \r \n';
str = str.replace(/\s+/g, ' ').trim();
console.log(str); // affiche: "ceci est un texte"

.replace() avec /\s+/g regexp change tous les espaces en un seul espace dans la chaîne entière, puis on fait .trim() pour supprimer tous les espaces blancs en excès avant et après le texte.