2011-02-07 8 views
1

Если у меня есть строка, как следующее:Разбор строки для {0}

«часть один {0} другое {1} и, наконец, {2}»

как я могу разобрать его так, чтобы извлеките компоненты «{0}», «{1}» и «{2}»

ответ

2
Regex regex = new Regex(@"\{[0-9]+\}"); 
var matches = regex.Matches("part one {0} another {1} and finally {2}"); 
// matches contains "{0}", "{1}", {2} 

Удалите "+", если ваши заполнители всегда однозначные.

0

RegEx может быть медленным. Если вам нужна более высокая производительность (потому что, возможно, вы разбираете много строк в этом формате), вы можете обычно лучше разобрать его вручную. Это будет работать, пока у вас хорошие маркеры. Например, если слово «другое» или «и наконец» появляется в строках, которые вы пытаетесь проанализировать, могут возникнуть проблемы. В противном случае вы можете легко разбить эту строку, используя комбинации «IndexOf» и «Substring».

0

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

String newString = String.Format(myString, String.Empty, String.Empty, String.Empty); 

или вы можете использовать массив из строки пустой, а не с помощью String.Empty, String.Empty, String.Empty ...

+0

Кроме числа '{D}' параметров вы упомянули, другая проблема состоит в том, что строка может содержать другие '{' и '}', что приведет к тому, что 'String.Format' выдаст исключение. Кроме того, я вовсе не уверен, что OP хочет, чтобы они были удалены - это требует некоторой интерпретации. – Kobi

+0

То, как я прочитал вопрос, состоял в том, что кому-то была дана строка «part one {0} другая {1} и, наконец, {2}», и она сказала, чтобы она делала разные значения на основе некоторых параметров, а не просто удаляла их. Вопрос в целом довольно расплывчатый, хочет ли OP удалить их или заменить их чем-то другим или чем-то совершенно другим полностью ... – Seph

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