Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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 Literals_Verbatim String - Fatal编程技术网

C# 向逐字字符串文本添加字符串

C# 向逐字字符串文本添加字符串,c#,string-literals,verbatim-string,C#,String Literals,Verbatim String,我有一个名为defaultPath的路径,我想将它添加到这个逐字字符串文字中,但可以得到它周围的引号 @"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\Data""" 我试图添加+defaultPath来替换数据。假设我有一个文件夹名Data.Apple,我希望输出是 "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /

我有一个名为defaultPath的路径,我想将它添加到这个逐字字符串文字中,但可以得到它周围的引号

    @"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\Data"""
我试图添加+defaultPath来替换数据。假设我有一个文件夹名Data.Apple,我希望输出是

   "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\Data.Apple"
但是当我在过去的半个小时里一直这样做的时候

   "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\"Data.Apple

这样做(首选):

或者像这样:

@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\" + defaultPath + "\"";

第一个使用,它基本上用第二个参数中的值替换第一个参数中的{0},并返回结果


第二个使用了经典的字符串连接,我所做的是删除最后一个反斜杠后面的双引号(
“..\
,而不是
”..\\
),因为您不希望在反斜杠后面加引号。您希望在
defaultPath
之后加引号。这就是代码的作用:它附加
defaultPath
“+defaultPath
)并在后面附加结束引号(
+“\”
)。

使用string.Format在引号之间插入变量:

string path = "Data.Apple";
string verbatim = string.Format(@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""{0}""", path);
MessageBox.Show(verbatim);
它使它更易于阅读和实现,您可以用类似的方式将路径的其他部分替换为可变部分


如果您试图将“defaultPath”变量附加到末尾,它将永远无法正常工作,因为您已经添加了结束符

,因此如果您想利用c#6的字符串插值,您也可以这样做

var randomText = "insert something";
var yourString = $@"A bunch of text in here 
that is on seperate lines
but you want to {randomText }";

欢迎回来,介意我再帮你一次吗…这听起来像是我们从昨天开始继续的,对吗?你为什么不保存你的眼睛?创建一个函数QuoteString()并以你喜欢的方式连接它们…哈哈,是的,非常好!不过我昨晚取得了很好的进展!@heinst:更新的答案。这对你有意义吗?我试着做第二个答案…我只是没有添加第二个\…你为什么要添加那个?除此之外,它们都有意义为什么你说它是“首选的”?我个人觉得很有意义有一点代码味道,
string.Format
用于连接,但它不执行任何实际的格式设置。像大多数事情一样,这取决于…@heinst:我想你在谈论这部分:
“\”
?如果我把它写成
@“”
,你会更清楚吗?这将在路径后添加结束引号。没有它,结果将是
“C:\Mavro\MavBridge\Server\MavBridgeService.exe”/service/data.\data.Apple
,而不是
“C:\Mavro\MavBridge\Server\MavBridgeService.exe”/service/data.\data.Apple“
@Nicodems13:这要看情况,你是对的。但在本例中,我发现使用
string.Format
的版本比另一个版本可读性好得多。如果您希望包含文字花括号,例如,在创建JSON字符串时,可以通过复制它们来转义,就像反双引号一样。像这样:
string value=“test”;字符串json=$@“{”“val”“:”{value}”“}”
string path = "Data.Apple";
string verbatim = string.Format(@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""{0}""", path);
MessageBox.Show(verbatim);
var randomText = "insert something";
var yourString = $@"A bunch of text in here 
that is on seperate lines
but you want to {randomText }";