Найти конкретный шаблон в строке, используя C # - PullRequest
5 голосов
/ 02 марта 2011

Я пытаюсь найти и удалить конкретный шаблон внутри строки с C #.

Шаблон представляет собой звездочку, за которой следует любое количество цифр, за которым следует .txt

Пример строки:

  1. тест * 123.txt
  2. test2 * 1.txt
  3. тест * 1234.txt3
  4. test4 * 12.txt123

Учитывая эти примеры, желаемые результаты будут:

  1. test ("* 123.txt" был удален)
  2. test2 ("* 1.txt" был удален)
  3. test3 ("* 1234.txt" был удален)
  4. test4123 ("* 12.txt" был удален)

Как это можно сделать?

Ответы [ 3 ]

8 голосов
/ 02 марта 2011

Если вы создаете регулярное выражение и заменяете его совпадения пустой строкой, вы фактически удаляете этот шаблон. Вот что вам понадобится для вашего шаблона:

  1. Звездочка имеет специальное значение в регулярном выражении (ноль или более от предыдущего элемента), поэтому вам придется экранировать ее с обратной косой чертой (\*).

  2. Вы можете сопоставить цифру с классом цифр (\d) или с явным классом, который включает все из них ([0-9]). Между ними есть различия из-за настроек культуры: \d может соответствовать таким вещам, как восточные арабские цифры (٠.١.٢.٣.٤.٥.٦.٧.٨.٩), в то время как [0-9] будет соответствовать только индус-арабские цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9).

  3. Вы можете использовать квантификатор + для соответствия одному или нескольким предыдущим элементам: \d+ будет соответствовать одной или нескольким цифрам.

  4. Точка - это еще один специальный символ (он соответствует любому отдельному символу, кроме символов новой строки). Также потребуется экранирование (\.).

  5. Вы можете сопоставить текст без специальных символов с самим текстом: txt точно соответствует txt.

Собрав все вместе, мы получим:

string purged = Regex.Replace(input, @"\*[0-9]+\.txt", "");
8 голосов
/ 02 марта 2011
string pattern = @"\*\d*\.txt";
Regex rgx = new Regex(pattern)
input = rgx.Replace(input, "");
0 голосов
/ 02 марта 2011

Я бы использовал RegEx для решения этой проблемы. Я рекомендую онлайн-редактор, чтобы помочь вам сделать это. Он называется Rubular и может быть найден на http://www.rubular.com/

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