2017-10-18 25 views
0

J'utilise C# dans Visual Studio 2017 (également ReSharper 9) et suis tombé sur le problème suivant:Comment remplacer le nom de l'argument uniquement pour une instanciation de classe particulière et pas dans d'autres parties du code?

J'instancier de nombreuses classes comme ceci:

new SystemMessage(SystemMessageType.Error, _internalId, "Request Failed: RequestAvailableScripts", e) 

Mon but est de remplacer le nom de l'argument internalId avec entityId. Je ne peux pas faire de recherche/remplacement global car internalId apparaît aussi ailleurs. Je veux seulement remplacer le nom d'argument dans le constructeur de new SystemMessage(....). Je ne suis pas familier avec les expressions régulières et n'ai pas compris comment je peux traiter le premier argument du constructeur, SystemMessageType.Error car Error est seulement une valeur possible de l'enum SystemMessageType . I want to replace the argument name _internalId within **all** nouveau SystemMessage (....) `indépendamment de le premier argument, passé dans le constructeur de classe. Edit: Pour être plus clair, les 1er, 3ème et 4ème arguments dans le constructeur de cette classe diffèrent, donc indépendamment je veux remplacer le nom du second argument mais seulement dans ce constructeur de classe particulier pas dans d'autres parties du code .

+0

Comme [CE] (https://regex101.com/r/mNt4fs/ 2)? – Gurman

+0

exactement ce que je cherchais, merci beaucoup. Ne hésitez pas à écrire une réponse d'une ligne et je peux le marquer complet. –

+0

Publié comme réponse :) – Gurman

Répondre

1

Essayez cette regex:

(new SystemMessage\([^)]*?)(_internalId)

Remplacer par:

$1entityId

Click for Demo