Я не сделал никакого программирования на DS, но я сделал некоторую разработку на GBA (Усовершенствованный Game Boy). Если то, что Вы надеетесь делать, изучают, как программировать встроенные устройства, которые могли бы быть хорошим вариантом для Вас (и конечно более дешевый). Существует даже бесплатная книга, можно стать онлайн: Программирование Nintendo Gameboy Совершенствовалось . Я предлагаю GBA, потому что, как я видел, существует намного больше ресурсов онлайн для изучения, как программировать для него. Один недостаток состоит в том, что это не имеет Wi-Fi, что означает, что Вы не будете в состоянии сделать столько прохладных вещей, сколько Вы были бы для DS, но это - конечно, запуск!
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."
}
Вам, вероятно, лучше использовать Replace для настраиваемого поля и Format для остальных, например:
string str = "Enter {0} {pat} name";
String.Format(str.Replace("{pat}", "Patient"), "Hello");
Я видел все ответы выше, но не смог правильно понять вопрос :)
Есть ли какая-то конкретная причина, по которой следующий код не соответствует вашим требованиям?
string myFirstStr = GetMyFirstStrFromSomewhere();
string mySecondStr = GetMySecondStrFromSomewhere();
string result = "Enter " + myFirstStr + " " + mySecondStr + " name";
Вы можете попробовать 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