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

hei*_*nst 6 c# string-literals verbatim-string

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

    @"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\Data"""
Run Code Online (Sandbox Code Playgroud)

我试图添加+ defaultPath来替换Data.所以假设我有一个文件夹名称Data.Apple我想要输出

   "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\Data.Apple"
Run Code Online (Sandbox Code Playgroud)

但是当我在过去的半小时里一直这样做的时候,我一直在努力

   "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\"Data.Apple
Run Code Online (Sandbox Code Playgroud)

要么

   "C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\" + defaultPath
Run Code Online (Sandbox Code Playgroud)

Dan*_*rth 9

这样做(首选):

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

或者像这样:

@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\" + defaultPath + "\"";
Run Code Online (Sandbox Code Playgroud)

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

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


Dea*_*ers 5

因此,如果您想利用c#6进行字符串插值,您也可以

var randomText = "insert something";
var yourString = $@"A bunch of text in here 
that is on seperate lines
but you want to {randomText }";
Run Code Online (Sandbox Code Playgroud)

  • 如果您想包含文字大括号,例如在创建 JSON 字符串时,您可以通过复制它们来转义它们,就像双引号一样。像这样:`string value = "test"; 字符串 json = $@"{{""val"": ""{value}""}}";` (5认同)