101 votes

Notepad++ remplacement incrémentiel

Disons que je veux avoir 10 lignes de données mais je veux qu'une valeur s'incrémente pour chaque ligne ou morceau de données. Comment puis-je incrémenter cette valeur?

Par exemple... Si j'ai ces lignes, existe-t-il un moyen avec les regex de remplacer les valeurs des id pour les faire s'incrémenter?

--- Voici à quoi je voudrais que ça ressemble... (si l'id de la première ligne augmente c'est correct)

1 votes

Les remplacements de Notepad++ ne font pas de mathématiques, pas plus que regex.

1 votes

Si c'est possible, c'est incroyablement difficile. Il n'y a pas de concept de nombres dans les expressions régulières (donc il n'y a pas de +1) et il n'y a pas de moyen facile d'accumuler des données lorsque vous faites correspondre une regex (donc il n'y a pas de correspondance "suivante"). XSLT pourrait vous aider ici, si vous avez vraiment besoin d'automatiser cela.

0 votes

@Amber Notepad++ a une fonctionnalité regex limitée.

175voto

voithos Points 15066

Je ne suis pas sûr des regex, mais il y a une façon de le faire dans Notepad ++, bien que cela ne soit pas très flexible.

Dans l'exemple que vous avez donné, maintenez la touche Alt enfoncée et sélectionnez la colonne de chiffres que vous souhaitez modifier. Ensuite, allez dans Modifier-> Éditeur de colonnes et sélectionnez le bouton radio Numéro à insérer dans la fenêtre qui apparaît. Spécifiez ensuite votre nombre initial et votre incrément, puis appuyez sur OK. Il devrait écrire les nombres incrémentés.

Remarque : cela fonctionne également avec la fonction Multi-édition (sélectionnant plusieurs emplacements tout en maintenant la touche Ctrl enfoncée).

Cependant, cela est loin de offrir la flexibilité que la plupart des gens trouveraient utile. Notepad ++ est génial, mais si vous voulez un éditeur vraiment puissant qui peut faire des choses comme ça facilement, je dirais d'utiliser Vim.

7 votes

+1 à la fois pour la fonction de colonne obscure et pour noter que vim est un éditeur plus puissant. ;)

1 votes

Notepad++ est génial, ce serait super si nous avions un éditeur de texte en ligne aussi puissant que celui-ci.

2 votes

Pour moi, il suffisait de sélectionner la colonne avec Alt+Shift, puis d'insérer le Nombre. Fonctionne parfaitement.

18voto

Bipin Mangwani Points 51

J'ai cherché la même fonctionnalité aujourd'hui mais je n'ai pas pu le faire dans Notepad++. Cependant, nous avons TextPad à notre rescousse. Cela a fonctionné pour moi.

Dans la boîte de dialogue de remplacement de TextPad, activez les regex; alors vous pourriez essayer de remplacer

par

Jetez un œil à ce lien pour d'autres fonctionnalités de remplacement étonnantes de TextPad - http://sublimetext.userecho.com/topic/106519-generate-a-sequence-of-numbers-increment-replace/

1 votes

Je suppose que ça aide si je fais réellement attention. J'ai fini par installer SublimeText. :) Merci.

3 votes

Mais assurez-vous de cliquer sur le bouton "Remplacer tout". "Remplacer suivant" n'incrémentera pas le compteur. Il a fallu des heures pour comprendre cela. \i Remplacer par des nombres commençant à 1, incrémentant de 1. \i(10) Remplacer par des nombres commençant à 10, incrémentant de 1. \i(0,10) Remplacer par des nombres commençant à 0, incrémentant de 10. \i(100,-10) Remplacer par des nombres commençant à 100, décrémentant de -10.

0 votes

Super! textpad fonctionne pour ce besoin.

6voto

KCD Points 1566

Étant donné qu'il y a des réponses limitées, je vais partager cette solution de contournement. Pour les cas vraiment simples comme votre exemple, vous le faites à l'envers...

À partir de cela

1
2
3
4
5

Remplacez \r\n par " />\r\n | | | | | | | | |

C'est évident, mais cela peut aider quelqu'un qui fait un petit hack ponctuel à économiser quelques frappes de touche.

6 votes

Remplacer (.*) par en mode regex sans . correspond à un saut de ligne vous conduira à 100% de la bonne solution.

3voto

user648026 Points 477

Les solutions suggérées ci-dessus fonctionneront uniquement si les données sont alignées..
Voir la solution dans le lien en utilisant le plugin PythonScript Notepad++, Ça fonctionne très bien!

stackoverflow Trouver/Remplacer mais Incrémenter la Valeur

1voto

Kranach Points 117

(Publication au cas où quelqu'un pourrait en avoir besoin).

Je cherchais une solution pour un problème un peu plus sophistiqué que celui d'origine - remplacer CHAQUE occurrence de quelque chose avec le numéro par la même chose avec le numéro incrémenté

Par exemple. Remplacer quelque chose comme ceci :

Par ceci :

Je n'ai pas trouvé de solution en ligne, donc j'ai écrit mon propre script en groovy (un peu moche mais fait le travail) :

 /**
 *  Trouve les mots qui correspondent au modèle et les augmente de 1.
 * '_' dans le modèle de mot représente un numéro
 *
 *  Par exemple, si le modèle est 'Row="_"', alors :
 * TOUS les Row=0 seront remplacés par Row="1"
 * Tous les Row=1 seront remplacés par Row="2"
 *  Attention - votre modèle de recherche pourrait ne pas fonctionner correctement si _ est le dernier caractère de celui-ci
 * etc.
 *

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X