Pergunta

Eu estou tentando substituir uma abreviatura do estado de duas letras com o texto, em seguida, a abreviatura. Eventualmente eu quero encontrar e substituir o resto. Como faço para capturar o valor encontrado? .... Eu tentei \ 1 e {1}

AL  32.2679134368897    -86.5251510620117
AR  35.2315113544464    -92.2926173210144
AZ  33.3440766538127    -111.955985217148
CO  39.7098631425337    -104.899092934348

if( usState == "AZ") dpos= "33.4736704187888" + " " + "-112.043138087587";
if( usState == "CA") dpos= "36.0783581515733" + " " + " -119.868895584259";
if( usState == "CO") dpos= "39.8950788035537" + " " + " -104.831521872318";
if( usState == "CT") dpos= "41.6001570945562" + " " + " -72.6606015937273";

Atualização $ 1 não funciona.

Eu estou achando: [A-Z] [A-Z] substituindo com: if (USState == "$ 1

Foi útil?

Solução

Curiosamente, o Visual Studio Expressões Regulares são diferentes expressões regulares .Net normais. Eles têm uma sintaxe ligeiramente diferente para marcas e substitui. A fim de marcar um pedaço de texto para a correspondência mais tarde você deve envolvê-la em chaves {}. Então você pode usar \ n nas seqüências de substituição onde n é o enésimo marcado expressão. Para o seu cenário aqui estão as cordas você deve usar

  • Encontre: {[A-Z][A-Z]}
  • Substituir: if( usState == "\1")

Outras dicas

Meu matcher regex corresponde a $ 1. Tente fazer isso.

Eu posso não ter entendido o seu problema, mas por que você não gravar uma macro temporária para fazer a transformação?

Coloque o [A-Z] [A-Z] entre parênteses, que captura-lo; em seguida, use \ 1 em seu texto de substituição para se referir à captura.

Uma vez que esta pergunta parece ser uma duplicata de https://stackoverflow.com/a/3147177/154480 mas Eu encontrei este primeiro: uma vez que Visual Studio 2012, você pode usar (pattern) e $1. Como um exemplo para esta questão específica, encontrar ([A-Z]{2}) por if( usState == "$1")

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