.NET Regex Expression para encontrar & Substituir Qualquer ProductName valor em um .vdproj arquivo em C #

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu estou tentando escrever uma tarefa extensão NAnt que pode atualizar as configurações diferentes dentro de um arquivo Visual Studio 2003 gerado Setup .vdproj, e gostaria de receber ajuda com o seguinte.

Especificamente, eu gostaria de usar uma expressão RegEx para encontrar e, se encontrado, substituir qualquer valor de cadeia de valor atribuído ao valor ProductName com um novo valor de cadeia em seu entirty.

Eu estou procurando uma expressão de conjunto RegEx para a mudança "ProductName" para qualquer outro valor sem ter que confiar em outra coisa senão que a string procurada começa com "ProductName" = "8": e, em seguida, tem 1 ou mais caracteres e . termina com uma "marca Eu tentei o seguinte sem sucesso:

Antes de executar o seguinte fragmento de código, ProductName do arquivo .vdproj lê-se:

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

... e o fragmento de código em 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);

Depois de executar o fragmento de código acima, ProductName do arquivo .vdproj agora lê-se:

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

Fechar, mas eu estava esperando "Meu outro aplicativo nativo" para substituir "Meu .NET aplicativo simples", e não adicionar a ele.

Qualquer insights e ajuda seria muito apreciada.

Foi útil?

Solução

Você está quase lá - faltando apenas um único
. Mude sua regex assim e felicidade deve seguir ...

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

Observe o. após o 8:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top