Remplacer les nouvelles lignes par un séparateur virgule avec Notepad ++?


165

J'ai une question Notepad ++.

Comment puis-je prendre les mots ci-dessous dans Notepad ++ (qui est sur différentes lignes)

Apples
Apricots
Pear
Avocados
Bananas

Et les transformer en un paragraphe avec une virgule à la fin de chacun? Comme ça:

Apples, Apricots, Pear, Avocados, Bananas

Réponses:


325

Ouvrez la boîte de dialogue Rechercher et remplacer (appuyez sur CTRL+ H).

Ensuite, sélectionnez Regular expressiondans la section «Mode de recherche» en bas.

Dans le Find whatchamp, entrez ceci:[\r\n]+

Dans le Replace with:

Il y a un espace après la virgule.

Cela remplacera également des lignes comme

Apples

Apricots
Pear

Avocados
Bananas

Où il y a des lignes vides.

Si vos lignes contiennent des espaces vides, vous devez d'abord les supprimer. Le moyen le plus simple d'y parvenir est

EDIT -> Blank Operations -> Trim Trailing Space

OU

TextFX -> TextFX Edit -> Trim trailing spaces

Assurez-vous de régler le mode de recherche sur "Expression régulière".


S'il y a des espaces de fin sur la ligne, vous pourriez utiliser _*[\r\n]+. Pour traiter les lignes vides transformées en virgules en excès, vous pouvez effectuer une recherche d'expression régulière ,_[,_]+et remplacer par ,_. Sinon, le package TextFx a une commande de suppression des lignes vides qui peut être utilisée avant d'ajouter les virgules. (Notez que les traits de soulignement sont
remplacés

oui vous avez très raison. J'essayais juste de donner une réponse minimaliste. Je devrais peut-être modifier la réponse alors.

2
Cela ne fonctionne pas pour moi: je vois "0 occurrence a été remplacée".
Iain Samuel McLean Elder

3
@IainElder, Search Mode doit être défini sur "Regular expression" au lieu de "Normal" ou "Extended".
Scott Lawrence

J'ai eu le même résultat que Iain.
dhochee le

34

Voici ce qui a fonctionné pour moi avec une liste similaire de chaînes dans Notepad ++ sans aucune macros ni rien d'autre:

  1. Cliquez sur Edit -> Blank Operations -> EOL to space [Tous les éléments doivent maintenant être sur une seule ligne séparés par un 'espace']

  2. Sélectionnez n'importe quel 'espace' et effectuez un Remplacer tout (par ',')


Simple and elegant, nice
reggaeguitar

@trishul vraiment sympa.
himanshupareek66

32

La réponse de fapDaddy en utilisant une macro m'a orienté dans la bonne direction.

Voici précisément ce qui a fonctionné pour moi.

  1. Placez le curseur après le premier élément de données. entrez la description de l'image ici

  2. Cliquez sur "Macro> Démarrer l'enregistrement" dans le menu. entrez la description de l'image ici

  3. Tapez cette séquence: Comma, Space, Delete, End.entrez la description de l'image ici

  4. Cliquez sur "Macro> Arrêter l'enregistrement" dans le menu. entrez la description de l'image ici

  5. Cliquez sur "Macro> Exécuter une macro plusieurs fois ..." dans le menu. entrez la description de l'image ici

  6. Cliquez sur «Exécuter jusqu'à la fin du fichier» et cliquez sur «Exécuter». entrez la description de l'image ici

  7. Supprimez tous les caractères de fin. entrez la description de l'image ici

  8. Terminé!

entrez la description de l'image ici


5
Cette méthode est lente pour des milliers d'éléments de données.
Iain Samuel McLean Elder

Très bonne réponse. Merci :)
Peter T.

Une si bonne information sera utile dans de nombreuses situations similaires. Merci!
Moin

Merci pour le partage des informations. C'est intéressant.
ironman

4

Pour Notepad ++ 5.9

  1. Appuyez sur Ctrl + H
  2. Sélectionnez le mode de recherche étendu (\ n, \ r, \ t, \ o, \ x ...)
  3. Entrez Rechercher: \ r \ n
  4. Entrez Remplacer par: ,
  5. Replace_All devrait obtenir le résultat requis.

3
Cette réponse répète la réponse acceptée et cette réponse fait référence à une ancienne version de Notepad ++, la version 7.4.x est maintenant disponible. Bienvenue dans Stack Overflow, mais veuillez vous demander de fournir de nouvelles informations ou de fournir de nouvelles informations. Répéter les réponses existantes n'est pas utile.
AdrianHHH

Pour les nouvelles versions de npp, c'est le meilleur moyen d'y parvenir.
nurdyguy

C'est la réponse la plus simple. Je ne devrais pas avoir à passer en mode Expression régulière juste pour remplacer les nouvelles lignes par des virgules. N ++ fonctionne en fait correctement alors que d'autres éditeurs interprètent "\ n" comme un retour chariot ET un saut de ligne, ce qui m'a déconcerté au début.
BrianVPS

3

Placez votre curseur après Apples , sous l' onglet Macro , sélectionnez Démarrer l'enregistrement . Tapez le caractère virgule ( , ), le caractère espace () et appuyez sur la touche Fin , sous l'onglet Macro, sélectionnez Arrêter l'enregistrement .

Ctrl + Maj + P pour une seule lecture.


Merci pour cette astuce. Et si j'ai 5000 ++ mots? Dois-je exécuter la macro pour chacun d'eux individuellement? Existe-t-il une méthode plus simple?
user2231530

Si vous devez effectuer une tâche similaire à l'avenir, vous voudrez peut-être écrire un script pour cela. La solution la plus simple consiste probablement à accéder à l'onglet Macro et à sélectionner exécuter la macro plusieurs fois. Cela se fera en quelques secondes.
viclim

+1 Votre réponse m'a orienté dans la bonne direction. Dans ma réponse, j'ai documenté exactement ce qui a fonctionné pour moi.
Iain Samuel McLean Elder

2

Cela peut sembler étrange, mais vous pouvez supprimer la ligne suivante en copiant tout le texte et en le collant dans la barre de recherche de Firefox, puis en le recollant dans le bloc-notes ++

étape 1

étape 2


1
Veuillez améliorer cette réponse. Les liens vers des images ne seront pas utiles.
Tiré

2

UTILISER la barre de recherche de Chrome

1-appuyez sur CTRL F
2-collez le texte copié dans la barre de recherche
3-appuyez sur CTRL Asuivi de CTRL Cpour copier à nouveau le texte de la recherche
4-collez dans Notepad ++
5-remplacez 'space'par','

1 clic pour l'image
2-cliquez pour l'image


0

Vous pouvez utiliser la ligne cc.rnl ', 'de commande de ConyEdit (un plugin) pour remplacer les nouvelles lignes par le contenu souhaité.


0

Un match regex avec a \s+fonctionné pour moi:

entrez la description de l'image ici


BTW: il me semble qu'une correspondance regex avec $^devrait fonctionner, mais elle correspond à la place ^$.
user3673

L'utilisation de l'option "Étendu" juste au-dessus de l'option "Expression régulière" (dans votre capture d'écran) est en fait le moyen le plus simple d'y parvenir.
nurdyguy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.