web-dev-qa-db-fra.com

Comment remplacer les nouvelles lignes/sauts de ligne par des espaces en javascript?

J'ai une var qui contient une grande liste de mots (des millions) dans ce format: 

var words =  "
car
house
home
computer
go 
went
";

Je veux faire une fonction qui remplacera la nouvelle ligne entre chaque mot avec un espace.

Donc, les résultats ressembleraient à ceci:

car house home computer go went
22
user1200640

Vous pouvez utiliser la fonction .replace():

words = words.replace(/\n/g, " ");

Notez que vous avez besoin de l'indicateur g sur l'expression régulière pour pouvoir remplacer pour remplacer toutes les nouvelles lignes par un espace plutôt que par la première.

Démo de travail: http://jsfiddle.net/jfriend00/VrAw2/

58
jfriend00

Dans le cas où il y a plusieurs sauts de ligne (symboles de nouvelle ligne) et s'il peut y avoir à la fois \r ou \n, et vous devez remplacer tous les sauts de ligne suivants} par un espace , utilisation

var new_words = words.replace(/[\r\n]+/g," ");

Voir démo regex

Pour faire correspondre tous les caractères de fin de ligne Unicode et les remplacer/les supprimer, ajoutez \x0B\x0C\u0085\u2028\u2029 à l'expression régulière ci-dessus:

/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g

Le /[\r\n\x0B\x0C\u0085\u2028\u2029]+/g signifie:

  • [ - début d'une classe de caractères positive correspondant à tout caractère défini dans celle-ci:
    • \r - (\x0D) - \n] - un retour chariot (CR)
    • \n - (\x0A) - un caractère de saut de ligne (LF)
    • \x0B - une tabulation de ligne (LT)
    • \x0C - flux de formulaire (FF) 
    • \u0085 - ligne suivante (NEL)
    • \u2028 - séparateur de ligne (LS)
    • \u2029 - séparateur de paragraphe (PS) ] - fin de la classe de caractères
  • + - un quantificateur qui fait correspondre le moteur d'expression régulière à l'atome précédent (la classe de caractères ici) une ou plusieurs fois (les sauts de ligne consécutifs sont appariés)
  • /g - recherche et remplace toutes les occurrences dans la chaîne fournie.

var words = "car\r\n\r\nhouse\nhome\rcomputer\ngo\n\nwent";
document.body.innerHTML = "<pre>OLD:\n" + words + "</pre>";
var new_words = words.replace(/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g," ");
document.body.innerHTML += "<pre>NEW:\n" + new_words + "</pre>";

29
Wiktor Stribiżew

Code: (FIXED)

var new_words = words.replace(/\n/g," ");
3
Dr.Kameleon

Une solution simple ressemblerait à

words.replace(/(\n)/g," ");
1