2015-02-10 5 views
3

Я следующая строка:Split гирлянды с Regex логических выражений

string text = "Hello && my || Name & is | Tom" 

Теперь я хочу, чтобы разбить строку на различные части без логических операторов между словами. Я пробовал следующее, но я получаю только одну строку со всем текстом.

String[] result= Regex.Split(text, @"\&&\||\&\|"); 

Что не так?

Ожидаемый выход представляет собой массив с 5 строк:

  • Здравствуйте
  • мой
  • Имя
  • является
  • Том
+1

Почему бы не использовать 'ДЕЛЕНИЕ (новый [] { '|', '&'}, StringSplitOptions.RemoveEmptyEntries)'? –

+0

Я думал, что regex более результативен? – Maddy

+1

@ Мадди Это не так. –

ответ

5

Нет регулярное выражение решения, только расщепление:

String[] result = text.Split(new Char[] { '|', '&' }, StringSplitOptions.RemoveEmptyEntries); 
+0

Он также будет разбит на '&&', а не просто '&' –

+0

@Amit Joki: он будет разбивать * дважды * на && и затем * удалять * пустая часть. –

+0

Хорошо .. Я понял. Вот почему я могу исключить вариант ввода записей. –

3

Изменить код,

String[] result= Regex.Split(text, @"\s*[|&]+\s*"); 

Это разбиение вашего ввода в соответствии с одним или несколькими символами | или &. \s* соответствует нулю или больше пробелов, а [|&]+ соответствует одному или нескольким | или &.

+0

Спасибо, что работает. И последний вопрос. Если я также хочу разбить текст в соответствии с '' '. Как я могу это сделать? – Maddy

+0

просто добавьте' '' в класс символов. '@" \ s * [| & ""] + \ s * "' –

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