Разобрать и заменить строку с помощью Regex - PullRequest
0 голосов
/ 16 марта 2010

У меня есть различные строки, которые выглядят так:

$(gateway.jms.jndi.ic.url,0,tibjmsnaming, tcp)/topic/$(gateway.destination.prefix)$(gateway.StatusTopicName),$(gateway.jms.jndi.ic.username),$(gateway.jms.jndi.ic.password),abinding,tBinding

Я пытаюсь найти способ извлечь разделы $ (...) и заменить их другой строкой.

есть ли в C # возможность разбирать эти группы и заменять одну на другую строкой?

Спасибо

Ответы [ 2 ]

5 голосов
/ 16 марта 2010

Это регулярное выражение будет захватывать эти разделы:

\$\([^)]+\)

Затем замените его следующим образом (в этом примере каждое совпадение меняется на заглавный эквивалент - вы можете добавить любую желаемую логику):

Regex.Replace(candidate, @"\$\([^)]+\)", delegate(Match m) {
    return m.ToString().ToUpper();
});
0 голосов
/ 16 марта 2010

Я не очень хорош с делегатом. Вот что я придумал, используя регулярное выражение Эндрю:

string test1 = @"$(gateway.jms.jndi.ic.url,0,tibjmsnaming, tcp)/topic/$(gateway.destination.prefix)$(gateway.StatusTopicName),$(gateway.jms.jndi.ic.username),$(gateway.jms.jndi.ic.password),abinding,tBinding";

            string regex1 = @"\$\([^)]+\)";

            var matches = Regex.Matches(test1, regex1);

            Console.WriteLine(matches.Count);
            foreach (Match match in matches)
            {
                test1 = test1.Replace(match.Value, "your String");                  
            }
            Console.WriteLine(test1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...