Строка форматирования - входная строка имела неправильный формат

Я хотел бы иметь функцию для получения строки и форматирования ее в другую строку следующего формата в С#: (тестирование - это входная переменная)

output:
@"{MyKey=testing}"

Моя простая программа ниже:

class Program
{
    static void Main(string[] args)
    {
        string s = test("testing");
    }
    private static string test(string myKey)
    {
        string s = string.Format("@{\"MyKey={0}\"}", myKey);
        return s;
    }
}

Синтаксической ошибки нет, но я получил эту ошибку времени выполнения:

введите здесь описание изображения

Я знаю, что строка включает специальный символ, но мне интересно, можно ли использовать string.Format для создания желаемого результата? Как мне правильно отформатировать строку?


person user1205746    schedule 15.08.2020    source источник


Ответы (1)


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

class Program
{
    static void Main(string[] args)
    {
        string s = test("testing");
        s.Dump();
    }
    private static string test(string myKey)
    {
        string s = string.Format("@{{\"MyKey={0}\"}}", myKey);
        return s;
    }
}

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

string s = $"@{{\"MyKey={myKey}\"}}";
person Michael    schedule 15.08.2020
comment
Заметка о том, почему использование двойных завитков решает проблему, может быть полезной (например, что это escape-последовательность, возможно, со ссылкой на документы) - person canton7; 16.08.2020