2013-11-15 6 views
1

У меня возникла проблема с удалением текста между двумя символами. Я хочу удалить весь текст между = и ,. Вот пример кода, к которому я пытаюсь применить это.Удалить символы между двумя символами

"Y = Yellow, W = White, B = Blue, R = Black Out" 

Что я хочу сделать, так это иметь вышеуказанное изменение.

"Y W B R" 

Предпочитаемый вариант, кроме вышеуказанного.

"Y W B R = Black Out" 

Вот что я пытаюсь.

 string input = "Y = Yellow, W = White, B = Blue, R = Black Out"; 
     string regex = "(\\=.*\\,)"; 
     string output = Regex.Replace(input, regex, ""); 

Вот что получает показано

"Y R = Black Out" 

Я знаю, что я делаю что-то неправильно. Это мой первый раз с использованием Regex.

ответ

4

Проблема в том, что * является жадным с регулярными выражениями. Поэтому, все от первого , до последнего = схвачено. Используйте *? использовать нежадным матч:

string regex = "=.*?,"; 

Чтобы избавиться от последнего значения, вы можете сделать это:

string regex = "=.*?(,|$)"; 
+0

, который получает этот результат. «Y W B R = Black Out» Есть ли способ получить этот результат «Y W B R»? – deathismyfriend

+0

Да, вы можете сделать 'string regex =" (\\ =. *? \\ (, | $)) ";' для соответствия запятой или концом строки. – Jacob

+0

Кроме того, у вас больше экранов и скобок, чем требуется. См. Мое обновление. – Jacob

4

Там нет необходимости использовать регулярные выражения:

string result = string.Join(" ", input.Split(',') 
           .Select(p => p.Split('=')[0].Trim())); 
+0

Это тоже работает. Какой из них лучше использовать? Также извините, но я должен отметить ответ Джейкобса как тот, кто решил это. Он ответил первым. – deathismyfriend

Смежные вопросы