Если у меня есть строка, как следующее:Разбор строки для {0}
«часть один {0} другое {1} и, наконец, {2}»
как я могу разобрать его так, чтобы извлеките компоненты «{0}», «{1}» и «{2}»
Если у меня есть строка, как следующее:Разбор строки для {0}
«часть один {0} другое {1} и, наконец, {2}»
как я могу разобрать его так, чтобы извлеките компоненты «{0}», «{1}» и «{2}»
Regex regex = new Regex(@"\{[0-9]+\}");
var matches = regex.Matches("part one {0} another {1} and finally {2}");
// matches contains "{0}", "{1}", {2}
Удалите "+"
, если ваши заполнители всегда однозначные.
RegEx может быть медленным. Если вам нужна более высокая производительность (потому что, возможно, вы разбираете много строк в этом формате), вы можете обычно лучше разобрать его вручную. Это будет работать, пока у вас хорошие маркеры. Например, если слово «другое» или «и наконец» появляется в строках, которые вы пытаетесь проанализировать, могут возникнуть проблемы. В противном случае вы можете легко разбить эту строку, используя комбинации «IndexOf» и «Substring».
Попробуйте это, он грязный, но будет работать (если вы знаете, сколько значений вы хотите удалить), и тот, кто читает ваш код, сможет его прочитать.
String newString = String.Format(myString, String.Empty, String.Empty, String.Empty);
или вы можете использовать массив из строки пустой, а не с помощью String.Empty, String.Empty, String.Empty
...
Кроме числа '{D}' параметров вы упомянули, другая проблема состоит в том, что строка может содержать другие '{' и '}', что приведет к тому, что 'String.Format' выдаст исключение. Кроме того, я вовсе не уверен, что OP хочет, чтобы они были удалены - это требует некоторой интерпретации. – Kobi
То, как я прочитал вопрос, состоял в том, что кому-то была дана строка «part one {0} другая {1} и, наконец, {2}», и она сказала, чтобы она делала разные значения на основе некоторых параметров, а не просто удаляла их. Вопрос в целом довольно расплывчатый, хочет ли OP удалить их или заменить их чем-то другим или чем-то совершенно другим полностью ... – Seph