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
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/
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>";
Code: (FIXED)
var new_words = words.replace(/\n/g," ");
Une solution simple ressemblerait à
words.replace(/(\n)/g," ");