在C#:如果我想创建这样的消息:"嗨我们有这些航班:航班A,B,C,D.你想要哪一个"
只有粗体部分是动态的,我在运行时传递它的值,但它的左右部分是固定的.我可以创建像LeftMessage +那些变量+ RightMessage来创建它.但我想知道是否有一种方法可以同时完成所有操作而无需创建两条单独的左右消息?
出于翻译目的,我将这些左右消息放在字符串资源中,所以现在我有两个单独的字符串资源.有没有办法一次完成所有操作?
Vim*_*mes 66
现在有了(C#6,Visual Studio 2015)更简洁的方法:字符串插值.
从另一个问题的答案:
在C#6中,您可以使用字符串插值:
Run Code Online (Sandbox Code Playgroud)string name = "John"; string result = $"Hello {name}";
在Visual Studio中为此突出显示的语法使其具有高可读性,并检查所有标记.
Dan*_*zey 40
你可以使用string.Format
:
string template = "Hi We have these flights for you: {0}. Which one do you want";
string data = "A, B, C, D"
string message = string.Format(template, data);
Run Code Online (Sandbox Code Playgroud)
您应该template
从资源文件加载并且data
是运行时值.
但是,如果要翻译成多种语言,请务必小心:在某些情况下,您需要{0}
使用不同语言的不同令牌(the ).
cod*_*biz 25
预C#6.0
string data = "FlightA, B,C,D";
var str = String.Format("Hi We have these flights for you: {0}. Which one do you want?", data);
Run Code Online (Sandbox Code Playgroud)
C#6.0 - 字符串插值
string data = "FlightA, B,C,D";
var str = $"Hi We have these flights for you: {data}. Which one do you want?";
Run Code Online (Sandbox Code Playgroud)
http://www.informit.com/articles/article.aspx?p=2422807
Pao*_*lla 11
String.Format("Hi We have these flights for you: {0}. Which one do you want",
flights);
Run Code Online (Sandbox Code Playgroud)
编辑:您甚至可以单独保存"模板"字符串(例如,您可以将其存储在配置文件中并从那里检索),如下所示:
string flights = "Flight A, B,C,D";
string template = @"Hi We have these flights for you: {0}. Which one do you want";
Console.WriteLine(String.Format(template, flights));
Run Code Online (Sandbox Code Playgroud)
EDIT2:哎呀,对不起我看到@DanPuzey已经提出了一些与我的编辑非常相似的东西(但更好)
归档时间: |
|
查看次数: |
108938 次 |
最近记录: |