Как обеспечить заполнителя пользовательской строки для формата строки

Я не сделал никакого программирования на DS, но я сделал некоторую разработку на GBA (Усовершенствованный Game Boy). Если то, что Вы надеетесь делать, изучают, как программировать встроенные устройства, которые могли бы быть хорошим вариантом для Вас (и конечно более дешевый). Существует даже бесплатная книга, можно стать онлайн: Программирование Nintendo Gameboy Совершенствовалось . Я предлагаю GBA, потому что, как я видел, существует намного больше ресурсов онлайн для изучения, как программировать для него. Один недостаток состоит в том, что это не имеет Wi-Fi, что означает, что Вы не будете в состоянии сделать столько прохладных вещей, сколько Вы были бы для DS, но это - конечно, запуск!

26
задан Cdeez 25 December 2012 в 10:36
поделиться

4 ответа

Regex с MatchEvaluator кажется хорошим вариантом:

static readonly Regex re = new Regex(@"\{([^\}]+)\}", RegexOptions.Compiled);
static void Main()
{
    string input = "this {foo} is now {bar}.";
    StringDictionary fields = new StringDictionary();
    fields.Add("foo", "code");
    fields.Add("bar", "working");

    string output = re.Replace(input, delegate (Match match) {
        return fields[match.Groups[1].Value];
    });
    Console.WriteLine(output); // "this code is now working."
}
17
ответ дан 28 November 2019 в 06:18
поделиться

Вам, вероятно, лучше использовать Replace для настраиваемого поля и Format для остальных, например:

string str = "Enter {0} {pat} name";
String.Format(str.Replace("{pat}", "Patient"), "Hello");
0
ответ дан 28 November 2019 в 06:18
поделиться

Я видел все ответы выше, но не смог правильно понять вопрос :)

Есть ли какая-то конкретная причина, по которой следующий код не соответствует вашим требованиям?

string myFirstStr = GetMyFirstStrFromSomewhere();
string mySecondStr = GetMySecondStrFromSomewhere();

string result = "Enter " + myFirstStr + " " + mySecondStr + " name";
3
ответ дан 28 November 2019 в 06:18
поделиться

Вы можете попробовать FormatWith 2.0 , автор Джеймс Ньютон-Кинг . Это позволяет вам использовать имена свойств в качестве токенов форматирования, например:

var user = new User()
{
    Name = "Olle Wobbla",
    Age = 25
};

Console.WriteLine("Your name is {Name} and your age is {Age}".FormatWith(user));

Вы также можете использовать его с анонимными типами.

ОБНОВЛЕНИЕ: Существует также аналогичное решение Скотт Хансельман , но оно реализовано как набор методов расширения для объекта вместо String ].

ОБНОВЛЕНИЕ 2012 : Вы можете получить пакет NuGet NETFx String.FormatWith Extension Method от Calrius Consulting на NuGet.org

ОБНОВЛЕНИЕ 2014 : Также имеется StringFormat.NET и Littlebit's StringFormat

51
ответ дан 28 November 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: