将字符串添加到逐字字符串文字中

时间:2012-05-10 15:41:54

标签: c# string-literals verbatim-string

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

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

我试图添加+ defaultPath来替换Data。所以我假设我有一个文件夹名称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

3 个答案:

答案 0 :(得分:9)

这样做(首选):

string.Format(@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\{0}""", defaultPath);

或者像这样:

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

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

第二个使用经典字符串连接,我在那里做的是在最后一个反斜杠(""..\而不是""..\"")之后删除双引号,因为你不想在之后的引号反斜杠。你想要defaultPath之后的引号。这就是这段代码的作用:它附加defaultPath" + defaultPath)并在之后追加结束语(+ "\"")。

答案 1 :(得分:3)

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

string path = "Data.Apple";
string verbatim = string.Format(@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""{0}""", path);
MessageBox.Show(verbatim);

它使阅读和实现更容易,您可以用类似的方式用可变部分替换路径的其他部分。

如果您尝试将“defaultPath”变量追加到最后,它将永远无法正常工作,因为您已经添加了结束"

答案 2 :(得分:3)

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

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