3 Stimmen

.NET Regex-Ausdruck zum Suchen und Ersetzen eines beliebigen ProductName-Wertes in einer .vdproj-Datei in C#

Ich versuche, eine NAnt-Erweiterungsaufgabe zu schreiben, die verschiedene Einstellungen innerhalb einer von Visual Studio 2003 generierten Setup-.vdproj-Datei aktualisieren kann, und würde Hilfe bei den folgenden Punkten schätzen.

Insbesondere möchte ich einen RegEx-Ausdruck verwenden, um zu finden, und wenn gefunden, ersetzen Sie alle Wert Zeichenfolge Wert zugewiesen ProductName Wert mit einem neuen Zeichenfolgenwert in seinem entirty.

Ich bin auf der Suche nach einem RegEx-Ausdruck, der "ProductName" in einen beliebigen anderen Wert umwandelt, ohne sich auf etwas anderes verlassen zu müssen als darauf, dass die gesuchte Zeichenfolge mit "ProductName" = "8" beginnt: und dann 1 oder mehr Zeichen hat und mit einem " endet. Ich habe Folgendes versucht, ohne Erfolg:

Bevor das folgende Codefragment ausgeführt wird, lautet der ProductName der .vdproj-Datei:

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

... und das Codefragment in 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);

Nach der Ausführung des obigen Codefragments lautet der ProductName der .vdproj-Datei nun wie folgt:

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

Fast, aber ich hatte erwartet, dass "My Other Native Application" "My Simple .NET Application" ersetzt und nicht ergänzt.

Für jeden Einblick und jede Hilfe wären wir sehr dankbar.

2voto

Dan Blanchard Punkte 3991

Sie haben es fast geschafft - es fehlt nur noch ein einziges .
Ändern Sie Ihre Regex so und das Glück sollte folgen...

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

Beachten Sie das . nach der 8:

0 Stimmen

Hi, Dan: In der Tat, das Glück hat sich eingestellt. Außerdem funktionierte die gleiche Regex-Ausdruck-Definition auch für die Eigenschaften Titel und ARPCOMMENT/Description in der .vdproj-Datei. Nochmals vielen Dank für deine Zeit und Hilfe...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X