Visual Studio: поиск и замена переменных
-
03-07-2019 - |
Вопрос
Я пытаюсь заменить двухбуквенное сокращение штата текстом, а затем аббревиатурой.Со временем я хочу найти и заменить остальное.Как мне зафиксировать найденное значение?....Я пробовал \1 и {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";
Обновление $ 1 не работает.
Я нахожу:AZ] [AZ] заменить:if( usState == "$1
Решение
Как ни странно, регулярные выражения Visual Studio отличаются от обычных регулярных выражений .Net.У них немного другой синтаксис для тегов и замен.Чтобы пометить фрагмент текста для последующего сопоставления, вы должны заключить его в фигурные скобки {}.Затем вы можете использовать в строках замены, где n — это выражение с тегом n.Для вашего сценария вот строки, которые вы должны использовать
- Находить:
{[A-Z][A-Z]}
- Заменять:
if( usState == "\1")
Другие советы
Мое средство сопоставления регулярных выражений соответствует $1.Попробуй это.
Возможно, я не понял вашей проблемы, но почему бы вам не записать временный макрос для преобразования?
Заключите [A-Z][A-Z] в круглые скобки, чтобы захватить его;затем используйте \1 в строке замены для ссылки на захват.
Поскольку эти вопросы кажутся дубликатом https://stackoverflow.com/a/3147177/154480 но я нашел это первым:начиная с Visual Studio 2012, вы можете использовать (pattern)
и $1
.В качестве примера для этого конкретного вопроса найдите ([A-Z]{2})
к if( usState == "$1")