Как извлечь и заменить строку в указанном формате c? - PullRequest
3 голосов
/ 07 января 2020

У меня есть строка ввода, как;

(rm01ADS21212, 'adfffddd', rmAdssssss, '1231232131', rm2321312322)

Я хочу найти все слова, начинающиеся с «rm», и заменить их на функцию удаления.

(remove(01ADS21212), 'adfffddd', remove(Adssssss), '1231232131', remove(2321312322))

Я пытаюсь использовать функцию replaceAll, но я не знаю, как извлечь части после литерала "rm".

statement.replaceAll("\\(rm*.,", "remove($1)");

Есть ли способ получить эти части?

Ответы [ 2 ]

5 голосов
/ 07 января 2020

Вы не захватили ни одной подстроки с группой захвата , поэтому $1 равно null.

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

.replaceAll("\\brm(\\w*)", "remove($1)")

См. regex demo

Подробности

  • \b - граница слова (для начала сопоставления только в начале слова)
  • rm - буквенная часть
  • (\w*) - Группа 1: 0+ слов символов (букв, цифр или подчеркиваний)

$1 в шаблон замены означает значение группы 1.

Если вы хотите сопоставить любые символы, кроме запятой и пробела после rm, используйте "\\brm([^\\s,]*)", см. это демонстрационное выражение регулярного выражения .

0 голосов
/ 07 января 2020

Используйте «Заменить» на пустую строку.

Например;

string str = "(rm01ADS21212, 'adfffddd', rmAdssssss, '1231232131', rm2321312322)";
 Console.WriteLine(str.Replace("rm", ""));

Выход: (01ADS21212, 'adfff ddd', Adssssss, '1231232131', 2321312322)

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