Regex - замена символов в строке C # в определенных случаях - PullRequest
0 голосов
/ 26 октября 2018

Я хочу заменить все скобки на другие в моей входной строке, только когда между ними нет цифр.Я написал этот рабочий пример кода:

    string pattern = @"(\{[^0-9]*?\})";
                MatchCollection matches = Regex.Matches(inputString, pattern);
                if(matches != null)
                {
                    foreach (var match in matches)
                    {
                        string outdateMatch = match.ToString();
                        string updateMatch = outdateMatch.Replace('{', '[').Replace('}', ']');
                        inputString = inputString.Replace(outdateMatch, updateMatch);
                    }
                }

Итак, для:

string inputString = "{0}/{something}/{1}/{other}/something"

Результат будет:

inputString = "{0}/[something]/{1}/[other]/something"

Есть ли возможность сделать это водна строка с использованием метода Regex.Replace ()?

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Regex.Replace(input, @"\{0}/\{(.+)\}/\{1\}/\{(.+)}/(.+)", "{0}/[$1]/{1}/[$2]/$3")

0 голосов
/ 26 октября 2018

Не могли бы вы сделать это?

Regex.Replace(inputString, @"\{([^0-9]*)\}", "[$1]");

То есть, захватить часть "число", а затем просто вернуть строку с замененными фигурными скобками.

Не уверен, что это именно то, что вам нужно, но, кажется, подходит вопрос:)

0 голосов
/ 26 октября 2018

Вы можете использовать

var output = Regex.Replace(input, @"\{([^0-9{}]*)}", "[$1]");

См. Демоверсию regex .

Подробности

  • \{ - a { char
  • ([^0-9{}]*) - Группа захвата 1: 0 или более символов, отличных от цифр, { и }
  • } - a }char.

Замена: [$1], содержание группы 1 заключено в квадратные скобки.

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