C # Regex Замена - PullRequest
       307

C # Regex Замена

0 голосов
/ 13 марта 2011

Итак, у меня есть такая строка:

    Some Text Here | More Text Here | Even More Text Here

И я хочу иметь возможность заменить текст между двумя полосами на New Text, поэтому он будет выглядеть так:

    Some Text Here | New Text | Even More Text Here

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

Ответы [ 2 ]

5 голосов
/ 13 марта 2011

В простом случае, подобном этому, лучшим подходом является простое разбиение строки:

string input = "foo|bar|baz";
string[] things = input.Split('|');
things[1] = "roflcopter";
string output = string.Join("|", things); // output contains "foo|roflcopter|baz";

Это зависит от нескольких вещей:

  • Всегда есть 3 строки текста с разделителями.
  • Между трубами нет незначительных промежутков.

Чтобы исправить второе, сделайте что-то вроде:

for (int i = 0; i < things.Length; ++i)
    things[i] = things[i].Trim();

Для удаления пробелов из начала и конца каждого элемента.

Общее правило с регулярными выражениями состоит в том, что они обычно должны быть вашим последним средством; не твой первый. :)

2 голосов
/ 13 марта 2011

Если вы хотите использовать регулярные выражения ... попробуйте это:

String testString = "Some Text Here | More Text Here | Even More Text Here";
Console.WriteLine(Regex.Replace(testString,
                        @"(.*)\|([^|]+)\|(.*)",
                        "$1| New Text |$3",
                         RegexOptions.IgnoreCase));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...