Изменить текст в Visual Studio с помощью регулярных выражений - PullRequest
0 голосов
/ 04 декабря 2009

Как вы, возможно, знаете, функция поиска и замены в Visual Studio позволяет нам использовать регулярные выражения, но я не знаю, как изменить что-то вроде этого:

Math.round((document.getElementById('selectedproductPrixdock').value*document.getElementById('addxdock').value)*100)/100

к этому:

(Math.round((document.getElementById('selectedproductPrixdock').value*document.getElementById('addxdock').value)*100)/100).toFixed(2)

На странице слишком много кода, подобного этому, и менять их по одному - большая проблема.

Заранее спасибо ..

Ответы [ 3 ]

1 голос
/ 04 декабря 2009

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

Я бы просто сделал это:

string s = "...some text...";
string toBeReplaced = "Math.round((document.getElementById('selectedproductPrixdock').value*document.getElementById('addxdock').value)*100)/100";
string replacement = "(" + toBeReplaced + ").toFixed(2)";
string result = s.Replace(toBeReplaced, replacement);

EDIT:

После перечитывания вашего вопроса знание каждого индивидуального идентификатора усложнит ситуацию. Вот регулярное выражение, которое должно работать:

string s = "...some text...";
string result = Regex.Replace(s, @"Math\.round\(\(document\.getElementById\('.+'\)\.value*document\.getElementById\('.+'\).value\)*100\)/100", "($0).toFixed(2)");
0 голосов
/ 04 декабря 2009

Я думаю, вы вообще слишком много просите о регулярных выражениях.

В связанных новостях вам, вероятно, будет проще выполнить рефакторинг, если вы не упакуете пятьдесят команд в одну строку.

0 голосов
/ 04 декабря 2009

Насколько похожи вещи, которые вы пытаетесь сопоставить?

Если все они идентичны, кроме внутренних аргументов, то

s/Math.round\(\(document.getElementById\('(.*?)'\).value*document.getElementById\('(.*?)'\).value\)*100\)\/100/\(Math.round\(\(document.getElementById\('$1'\).value*document.getElementById\('$2'\).value\)*100\)\/100\).toFixed\(2\)/g

Замена $ 1 и $ 2 на то, что VS использует для заполнения обратных ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...