Выражение .NET Regex для поиска и замены любого значения ProductName в файле .vdproj в C # - PullRequest
3 голосов
/ 30 ноября 2009

Я пытаюсь написать задачу расширения NAnt, которая может обновлять различные параметры в сгенерированном файле .vdproj программы установки Visual Studio 2003 и была бы признательна за помощь в следующем.

В частности, я хотел бы использовать выражение RegEx, чтобы найти и, если найдено, заменить любое строковое значение, присвоенное значению ProductName, новым строковым значением в его начале.

Я ищу набор выражений RegEx для изменения «ProductName» на любое другое значение без необходимости полагаться ни на что, кроме искомой строки, начинающейся с «ProductName» = «8»: а затем содержит 1 или более символов и заканчивается знаком ". Я пробовал следующее безрезультатно:

Перед выполнением следующего фрагмента кода ProductName файла .vdproj читает:

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

... и фрагмент кода в 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);

После выполнения приведенного выше фрагмента кода ProductName файла .vdproj теперь выглядит так:

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

Закрыть, но я ожидал, что «Мое другое родное приложение» заменит «Моё простое приложение .NET», а не добавит к нему.

Любые идеи и помощь будут с благодарностью.

1 Ответ

2 голосов
/ 30 ноября 2009

Вы почти у цели - пропускаете только один.
Измените свое регулярное выражение таким образом, и счастье должно следовать ...

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

Обратите внимание. после 8:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...