我想创建一个字符串,其中占位符位于大括号内,用于自定义文本。例如
string mySpecialMessage = "Hi there developer {name}.
I see that you have {reputation} reputation points!
Thanks for looking at my stack overflow. You're a real {compliment}";
然后我会将它提供给方法
Display(mySpecialMessage, MessageType.HighPriority, 2);
方法看起来像这样
public void Display (string messageContents, messageType messageType, float displayDuration)
{
// TODO - Format messageContents with replaced placeholders
// Create a new instance of message
Message newMessage = new Message(messageContents, messageType, displayDuration);
// Adds message to queue
messageQueue.Enqueue(newMessage);
if (!processing)
{
StartCoroutine(ProcessMessageQueue());
}
}
}
我的问题是:如何提取所有这些大括号并将其格式化回字符串?
答案 0 :(得分:2)
使用字符串插值:
string name = "Example Name";
string reputation = "Example Reputation";
string compliment = "Example Compliment";
string mySpecialMessage =
$"Hi there developer {name}. " +
$"I see that you have {reputation} reputation points!" +
$"Thanks for looking at my stack overflow.You're a real {compliment}";
请注意字符串前的$
。
在计算机编程中,字符串插值(或变量插值,变量替换或变量扩展)是评估包含一个或多个占位符的字符串文字的过程,从而产生一个结果,其中占位符将替换为其对应的值。它是一种简单的模板处理形式,或者在形式上,是一种准引用(或逻辑替换解释)的形式。与字符串连接相比,字符串插值允许更简单,更直观的字符串格式化和内容规范。
答案 1 :(得分:0)
mySpecialMessage.Replace("{name}", "Your Name");
mySpecialMessage.Replace("{reputation}", "123");
mySpecialMessage.Replace("{compliment}", "hero");
答案 2 :(得分:0)
String.Format()也可以在这里使用:
Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0} per ounce.", pricePerOunce);
// Result: The current price is 17.36 per ounce.
括号中的值{0}
将替换为作为下一个参数传递的对象(在示例中为浮点数)。 String.Format
同时接受多个对象。
虽然我更喜欢ceferrari的解决方案,因为它可以使用命名变量。