1

Je voudrais obtenir des lignes comme celle-ci:texte mise en forme que CamelCase dans Visual Studio

#define FACILITY_USERMODE_HYPERVISOR 53 

à une ligne comme celle-ci, pour une utilisation dans un ENUM:

zFacilityUsermodeHypervisor = FACILITY_USERMODE_HYPERVISOR, 

Un rapide regex replace fait la moitié du tour, y at-il un moyen rapide d'obtenir le résultat complet?

Regex: #define (FACILITY_\w+)\s+(\d+) 
Replace: $1 = $1, 

Cela me laisse

FACILITY_USERMODE_HYPERVISOR = FACILITY_USERMODE_HYPERVISOR, 

Comment puis-je convertir la première partie à CamelCase?

Répondre

1

Ceci est certainement trop difficile à réaliser avec VS S & R qui ne supporte pas \l/\u et \L/\U ... \E opérateurs dans le modèle de remplacement.

Je suggère acheiving avec 3 étapes dans Notepad ++:

  • Dupliquer l'identifiant que vous devez tourner vers CAMEL cas #define (FACILITY_\w+)(?=\s+\d+) regex (see demo). Votre #define FACILITY_USERMODE_HYPERVISOR 53 deviendra #define FACILITY_USERMODE_HYPERVISOR %%% FACILITY_USERMODE_HYPERVISOR 53.
  • Appliquer le cas CaMeL sur la première occurrence de l'identifiant après #define avec (?:#define\s+|(?!^)\G)\K_?([A-Za-z])([^\W_]*)_?(?=[\w\s]*%%%) regex et \u$1\L$2\E remplacement. Ainsi, #define FACILITY_USERMODE_HYPERVISOR %%% FACILITY_USERMODE_HYPERVISOR 53 deviendra #define FacilityUsermodeHypervisor %%% FACILITY_USERMODE_HYPERVISOR 53.

enter image description here

  • La dernière étape consiste à mettre votre sortie désirée: supprimer ce que vous n'avez pas besoin et en ajoutant le signe égal: utilisez #define (Facility\w*)\s+%%%\s+(\w+)\s+\d+ regex avec le remplacement z$1 = $2, (see demo).