Как заменить.в шаблонных строках с / в Visual Studio - PullRequest
2 голосов
/ 25 октября 2011

У меня много кода в нашем решении, например:

Localization.Current.GetString("abc.def.gih.klm");

Я хочу заменить его на:

Localization.Current.GetString("/abc/def/gih/klm");

количество точек (.) Является переменным.

Как я могу сделать это в Visual Studio (2010)?

Редактировать: я хочу заменить строки в коде (в редакторе VS 2010), а не при запуске приложения

Большое спасибо

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

Неправильно прочитан ваш запрос.

Если вы нажмете Ctrl + Shift h и поместите это как строку поиска

{Localization\.Current\.GetString\("[A-Za-z\/]+}(\.)

Затем замените это на:

\1/

И затем в FindОпция галочка использует регулярные выражения.

Это найдет первую точку и заменит ее.Нажав кнопку «Найти далее», вы получите второе и т. Д. Вам придется продолжать делать замену всех, пока все они не будут выполнены.Кто-то может улучшить это!

Как показано ниже

enter image description here

1 голос
/ 25 октября 2011

Попробуйте это в диалоге «Заменить в файлах» на «Использовать регулярные выражения»

Найти что:

 {[^"]*"[^"]*}\.

Если вы хотите быть более строгим в отношении разрешенных символов между кавычками, попробуйте это

{[^"]*"[A-Za-z.]*}\.

это позволит использовать только символы ASCII и точки между кавычками.

Заменить на

\1/

Он найдет первую " в строке и заменит последнюю точку перед следующей " на /

Проблема в том, что она заменяет только последнее вхождение точки в первом наборе "" в каждой строке. Так что вам придется звонить несколько раз, пока не появится сообщение «Текст не найден»

И будьте осторожны, если между "" есть искомая точка. он также будет заменен.

0 голосов
/ 25 октября 2011

РЕДАКТИРОВАТЬ

вы не можете использовать это в visual studio, так как он имеет свой собственный вариант регулярного выражения , а не тот, который используется в классах регулярных выражений .NET, и я не думаю, что вы можете сделать это за этим. .

Вы можете использовать это регулярное выражение:

(?<=\("[\w.]+)\.

найти и заменить, заменив на.

Разбивка:

  • Совпадение с точкой (в конце).
  • Которому предшествует ( положительный взгляд ) скобка (за которой следует ", а затем любое количество символов, которые являются буквами или точками (точки не нужно экранировать в группе)"

если вы уверены, что текст, который вы хотите заменить только когда-либо, имеет бит Localization.Current.GetString, то вы могли бы включить его в просмотр за регулярным выражением:

(?<=Localization\.Current\.GetString\("[\w.]+)\.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...