简体   繁体   中英

Adding a string to the verbatim string literal

I have a path that is named defaultPath I want to add it into this verbatim string literal but can quite get the quotes around it.

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

I was trying to add +defaultPath to replace Data. So lets say I have a folder name Data.Apple I want the output to be

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

But when I have been doing it for the past half hour I have been getting

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

or

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

Do it like this (preferred):

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

Or like this:

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

The first one uses string.Format , which basically replaces the {0} in the first parameter with the value in the second parameter and returns the result.

The second one uses classical string concatenation and what I did there was to remove the double quotes after the last backslash ( ""..\\ instead of ""..\\"" ), because you didn't want the quotes after the backslash. You wanted the quotes after defaultPath . And that's what this code does: It appends defaultPath ( " + defaultPath ) and appends the closing quote afterwards ( + "\\"" ).

Use string.Format to insert the variable between the quotes:

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

It makes it easier to read and to implement, you can replace other portions of the path with variable sections in a similar manner.

If you try to just append the "defaultPath" variable to the end, it will never work correctly, as you've already added the closing " .

So if you would like to take advantage of the string interpolation with c# 6 you could also do

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM