2015-03-17 2 views
-2

Я хочу, чтобы разделить строку «Это относительно проблемы {про} в {заявлении}»как разбить строку в C#

Я хочу, чтобы получить выход в

This is regarding the problem of 
{pro} 
in 
{statement} 
+0

Как строка с новыми строками или как массив строк? –

+0

Непонятно, что вы спрашиваете. Вы всегда хотите разделиться после слов 'of' и' in' и слов, которые сразу же следуют за ними? Вы всегда хотите разделиться на 25, 28, 33 и 44-м письмах (нет, я точно не считал)? – mason

+0

Нет. Я хочу разделить найденное {и также хотеть значение внутри {}. – user4678815

ответ

2

Вы может попробовать this regex:

([^{]+|{[^}]*}) 

Это соответствует каждая группа символов, которые определяются как:

  • Последовательность символов (по крайней мере одна), ни одна из которых не является {; или
  • { символ, за которым следует любому количество символов, которые не являются }, все следует }
+0

Ваше регулярное выражение очень полезно. Большое спасибо. Я могу продолжить свою работу. – user4678815

+1

'({[^}] *})' похоже, делает то же самое и создает менее пустые строки, поэтому работает немного лучше (7.1 сек против 11.4 сек для 5 миллионов повторений) – learningcs

+0

Это вытащит {} и их содержание? Регулярное выражение, которое я разместил, также соответствует каждому разделу текста между и {} секциями – Blorgbeard

0

Вот простое регулярное выражение, которое будет вставить новую строку до и после того, как ваш маркер соответствует переопределению оценщика:

string output = Regex.Replace(input, @"{\S+}", m => string.Format(@"{1}{0}{1}", m.Value, '\n')); 

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

string[] lines = output.Split('\n'); 
Смежные вопросы