2010-08-09 5 views
4

J'ai un fichier source C++ qui utilise des fonctions de la forme getMemberName() pour renvoyer des données de membre. Au lieu de cela, j'aimerais utiliser memberName().Est-ce que Notepad ++ peut convertir des chaînes en expressions minuscules?

Afin de faire correspondre les instances de noms de fonctions qui doivent changer, j'utilise l'expression régulière suivante:

(\s+)get([A-Z]) 

Le problème est, je ne sais pas comment remplacer l'instance de \ 2 avec sa version en minuscule. Est-ce que quelqu'un a des idées, ou devrais-je recourir à l'écriture d'un script Perl?

Merci,

Zach

Répondre

10

Remarque: Cette fonctionnalité est disponible dans Notepad ++ via le modèle de substitution d'expression régulière \L\1\E.

  • \L minuscules sur
  • \2 pour le groupe correspondant à 2
  • \E
  • minuscules hors tension, dans le cas où vous avez des remplacements.

Voir Novices answer et notepad++ wiki for details


Il est, comme d'habitude, une autre façon. Cela peut être fait dans Notepad ++ avec le plugin PythonScript, ainsi que toute autre chose qui dépasse le cadre de ce qui est disponible dans notepad ++ sans avoir à écrire un plugin complet.

d'abord, installez le plugin PythonScript dans Notepad ++

Plugins> Plugin Manager> Afficher Plugin Manager

Cochez la case "Script Python" dans l'onglet "Disponible" et cliquez sur "Installer" puis redémarrez Notepad ++

configuration Puis un script Python

Pl ugins> Python Script> Nouveau script

Donnez-lui un nom utile

Ajoutez le code suivant

# Start a sequence of actions that is undone and redone as a unit. May be nested. 
editor.beginUndoAction() 

# trimFunctionName - for editor.pysearch 
def trimFunctionName(index, match): 
    editor.pyreplace(match.re, match.group(1) + match.group(2).lower(), 1, 0, index, index) 

# I couldn't work out how to jam the .lower call into a editor.pyreplace() 
# so used editor.pysearch() to check the regex and run a function with match 
# information 
editor.pysearch(r'(\s+)get([A-Z])', trimFunctionName) 

# end the undo sequence 
editor.endUndoAction() 

Ensuite, exécutez le script.

Plugins> Python Script> Scripts> "yourScript"

Vous pouvez demander l'entrée d'utilisateur ou de faire une myriade d'autres choses à scintilla avec les objets fournis

+0

Bien que cela puisse fonctionner, il ne devrait plus être la réponse acceptée car il y a une installation intégrée pour changer cas trouver de N ++/remplacer fonctionnalité. (Voir ci-dessous la réponse de Novice, bien que cela n'ait pas été possible lorsque cette réponse a été postée à l'origine.) – HitScan

+0

Le wiki remonte à cette époque, il pourrait donc déjà avoir existé. J'ai ajouté une mise à jour avec les détails des novices. – Matt

2

Oui vous devez écrire un script Perl pour cela. Le moteur de regex intégré n'est pas assez puissant pour gérer quelque chose comme ça.

8

Voici un très basique Convertisseur de balise HTML (en minuscules):

clic gauche Recherche ->Remplacer (ou CTRL H).

Entrez les informations suivantes dans les champs appropriés:

Trouvez ce que: <([^>]+?)>

Remplacer par: <\L\1>

gauche cliquez sur Remplacer tout .

Fait

+0

Merci, je dois changer en majuscule et j'utilise \ U \ 1 – appmaster

Questions connexes