Expression Regex .NET pour la recherche & amp; Remplacement de toute valeur ProductName dans un fichier .vdproj en C #

StackOverflow https://stackoverflow.com/questions/1817108

  •  08-07-2019
  •  | 
  •  

Question

J'essaie d'écrire une tâche d'extension NAnt capable de mettre à jour différents paramètres d'un fichier .vdproj d'installation généré par Visual Studio 2003, et j'apprécierais de l'aide pour les tâches suivantes.

Plus précisément, j'aimerais utiliser une expression RegEx pour rechercher et, le cas échéant, remplacer toute valeur de chaîne de valeur affectée à la valeur ProductName par une nouvelle valeur de chaîne dans son intégralité.

Je recherche une expression RegEx définie pour modifier "ProductName " à toute autre valeur sans devoir compter sur rien d'autre que le fait que la chaîne recherchée commence par " ProductName " = " 8 " ;: et puis a 1 ou plusieurs caractères et se termine par un " marque. J'ai essayé ce qui suit en vain:

Avant d'exécuter le fragment de code suivant, le nom de produit du fichier .vdproj est le suivant:

"ProductName" = "8:My Simple .NET Application"

... et le fragment de code en C #:

string _theProductName = "My Other Native Application";

Regex productNameExpression = new Regex( @"(?:\""ProductName\"" = \""8:*)" );

_theProjectFileContents = 
productNameExpression.Replace(_theProjectFileContents, 
                              "\"ProductName\" = \"8:" + _theProductName + "\"" );

bool updatedProductName = 
(_theProjectFileContents.IndexOf(_theProductName) >= 0);

Après avoir exécuté le fragment de code ci-dessus, le nom de produit du fichier .vdproj est libellé comme suit:

"ProductName" = "8:My Simple .NET Application"My Other Native Application"

Fermer, mais je m'attendais à "Mon autre application native". pour remplacer "Mon application .NET simple" et ne pas y ajouter.

Toute idée ou aide serait grandement appréciée.

Était-ce utile?

La solution

Vous y êtes presque. Il ne manque qu'un seul.
Changez ainsi votre regex et le bonheur devrait suivre ...

Regex productNameExpression = new Regex(@"(?:\""ProductName\"" = \""8:.*)"); 

Notez le. après le 8:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top