Domanda

Sto cercando di sostituire un'abbreviazione di stato di due lettere con testo quindi l'abbreviazione. Alla fine voglio trovare e sostituire il resto. Come acquisisco il valore trovato? .... Ho provato \ 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";

Aggiornamento $ 1 non funziona.

Sto trovando: [A-Z] [A-Z] sostituendo con: if (usState == " $ 1

È stato utile?

Soluzione

Stranamente, le espressioni regolari di Visual Studio sono diverse dalle normali espressioni regolari .Net. Hanno una sintassi leggermente diversa per tag e sostituzioni. Per taggare un pezzo di testo per una successiva corrispondenza, devi racchiuderlo tra parentesi graffe {}. Quindi è possibile utilizzare \ n nelle stringhe di sostituzione in cui n è l'ennesima espressione con tag. Per il tuo scenario qui ci sono le stringhe che dovresti usare

  • Trova: {[A-Z[[A-Z×}
  • Sostituisci: if (usState == " \ 1 ")

Altri suggerimenti

Il mio abbinatore regex corrisponde a $ 1. Prova quello.

Potrei non aver capito il tuo problema, ma perché non registri una macro temporanea per eseguire la trasformazione?

Racchiudere [A-Z] [A-Z] tra parentesi, che lo cattura; quindi, usa \ 1 nella stringa di sostituzione per fare riferimento alla cattura.

Poiché questa domanda sembra essere un duplicato di https://stackoverflow.com/a/3147177/154480 ma L'ho trovato prima io: da Visual Studio 2012, puoi usare (pattern) e $ 1 . Ad esempio per questa domanda specifica, trova ([A-Z] {2}) in if (usState == " $ 1 ")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top