Вы можете написать простое расширение и использование регулярных выражений:
public static class StringExtensions
{
public static bool HasPlaceholder(this string s)
{
return Regex.IsMatch(s, "{\\d+}");
}
}
Это регулярное выражение работ только для указанных вами заполнителей (содержащих только номер).
Для полного заполнителя вам понадобится что-то вроде "{\\d+(,-?\\d+)?(:[A-Z]\\d*)?}"
. Но это все еще нуждается в уточнении. См. "Standard Numeric Format Strings" для получения полного списка допустимых символов.
Вы можете использовать это расширение, как это:
string s = "This string contains {0} a placeholder";
if (s.HasPlaceholder())
Console.WriteLine("Contains placeholders");
Действительно, только номер внутри '{...} '? У вас действительно была проблема с таким основным регулярным выражением? Я предположил, что вам нужно сопоставить любые заполнители 'string.Format' в начале, но теперь это кажется просто обманом [Learning Regular Expressions] (http://stackoverflow.com/a/2759417/3832970). –
В этой строке содержится местозаполнитель? '" A {{0}} B "'? –