Как получить все параметры формата строки - PullRequest
3 голосов
/ 27 апреля 2010

Есть ли способ получить все параметры формата строки?

У меня есть эта строка: "{0} test {0} test2 {1} test3 {2: ####}" Результатом должен быть список: {0} {0} {1} {2: ####}

Есть ли в .net встроенные функции, поддерживающие это?

Ответы [ 5 ]

3 голосов
/ 28 апреля 2010

Я не слышал о такой встроенной функциональности, но вы можете попробовать это (я предполагаю, что ваша строка содержит параметры стандартного формата, которые начинаются с цифры):

List<string> result = new List<string>();
string input = "{0} test {0} test2 {1} test3 {2:####}";
MatchCollection matches = Regex.Matches(input, @"\{\d+[^\{\}]*\}");
foreach (Match match in matches)
{
    result.Add(match.Value);
}

возвращает {0} {0} {1} {2:####} значения в списке. Для строки tehMick результатом будет пустой набор.

3 голосов
/ 27 апреля 2010

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

Регулярное выражение типа \{.*?\}, вероятно, сработает.

1 голос
/ 27 апреля 2010

Это не похоже на это. Reflector предлагает все синтаксический анализ строки формата внутри StringBuilder.AppendFormat (IFormatProvider, string, object []).

1 голос
/ 27 апреля 2010

нет, для этого нет встроенной функции. Вы должны разобрать их с помощью регулярного выражения или чего-то еще

0 голосов
/ 27 апреля 2010

Чтобы получить хорошую отправную точку для нахождения всех фигурных скобок, вам нужно взглянуть на метод расширения FormatWith .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...