Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字符串的中间插入变量值_C#_String - Fatal编程技术网

C# 在字符串的中间插入变量值

C# 在字符串的中间插入变量值,c#,string,C#,String,在C#:如果我想创建这样的消息: “您好,我们有您的航班:A、B、C、D航班。您要哪一个航班?” 其中只有粗体部分是动态的,我在运行时传递它的值,但它的左右部分是固定的。我可以创建LeftMessage+这些变量+RightMessage这样的东西来创建这个。 但是我想知道是否有一种方法可以一次完成这一切,而不需要创建两个独立的左右消息 出于翻译目的,我将这些左消息和右消息放在字符串资源中,因此现在我有两个单独的字符串资源。有没有一种方法可以同时完成这一切 1您可以使用string.Replac

在C#:如果我想创建这样的消息: “您好,我们有您的航班:A、B、C、D航班。您要哪一个航班?”

其中只有粗体部分是动态的,我在运行时传递它的值,但它的左右部分是固定的。我可以创建LeftMessage+这些变量+RightMessage这样的东西来创建这个。 但是我想知道是否有一种方法可以一次完成这一切,而不需要创建两个独立的左右消息


出于翻译目的,我将这些左消息和右消息放在字符串资源中,因此现在我有两个单独的字符串资源。有没有一种方法可以同时完成这一切

1您可以使用
string.Replace
方法

var sample = "testtesttesttest#replace#testtesttest";
var result = sample.Replace("#replace#", yourValue);
2您也可以使用
string.Format

var result = string.Format("your right part {0} Your left Part", yourValue);
3您可以使用Regex类

String.Format("Hi We have these flights for you: {0}. Which one do you want",
                              flights);
编辑: 您甚至可以单独保存“模板”字符串(例如,您可以将其存储在配置文件中并从中检索),如下所示:

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));
EDIT2:哎呀,抱歉,我看到@DanPuzey已经建议了一些与我的编辑非常相似的东西(但有些更好)

使用

C#6.0之前

C#6.0--


您可以使用
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);
您应该从资源文件中加载
模板
,并且
数据
是您的运行时值

但是,如果您要翻译成多种语言,请小心:在某些情况下,您需要不同语言中的不同标记(
{0}

发件人:

在C#6中,您可以使用:

VisualStudio中为此突出显示的语法使其具有很高的可用性 可读,并检查所有标记


我会使用StringBuilder类来进行字符串操作,因为它会更有效(可变)


Yes查找String.Join()方法示例String.Join(“,”,someVariable)或String.Format(“消息{0}”),并对其余文本params{1}{2}{3},etcre:tokens使用以下参数计数器-我找不到任何相关信息,您的意思是如果使用不同的语言,我需要使用{0}在另一种语言中?我的代码工具(resharper)建议从第一种形式自动更正为第二种形式,表明这是(默认情况下)首选语法。
string data = "FlightA, B,C,D";
var str = $"Hi We have these flights for you: {data}. Which one do you want?";
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);
string name = "John";
string result = $"Hello {name}";
string flights = "Flight A, B,C,D";
StringBuilder message = new StringBuilder();
message.Append("Hi We have these flights for you: ");
message.Append(flights);
message.Append(" . Which one do you want?");