как обращаться с кавычками в строке при передаче этой строки в командную строку - PullRequest
1 голос
/ 02 февраля 2010

Я не могу разобраться в кавычках.

EG, у меня есть строка для mp3 с кавычками:

string ARTIST = "John \"The Man\" Doe"

Затем я хочу передать это в командную строку С escape-последовательностями. Поэтому мне нужно, чтобы моя строка выглядела (я думаю):

ARTIST = "John \\\"The Man\\\" Doe"

Похоже, что для каждого (* фактического) " в моей строке мне нужно \".

Я пытался использовать:

ARTIST.Replace("\"","\\\"") 

Но это не сработало. Как правильно обрабатывать кавычки в командной строке в моем приложении?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2010

Убедитесь, что вы делаете:

ARTIST = ARTIST.Replace("\"","\\\"");

Вместо просто:

ARTIST.Replace("\"","\\\"");

Это уже так?

0 голосов
/ 02 февраля 2010

Основная идея, кажется, верна, но вы также добавили окружающие кавычки, т.е.

"\"" + ARTIST.Replace("\"", "\\\"") + "\""

Кроме того, обратите внимание, что вам понадобится три обратных слеша, а не два, чтобы убежать \"; компилятор будет жаловаться, если вы этого не сделаете.

0 голосов
/ 02 февраля 2010

Командная строка Windows не использует \ как экранирование для кавычки, она использует избыточную кавычку,

, поэтому вы хотите отправить "John ""The Man"" Doe", которое вы получаете в C #, экранируя каждую цитату

string ARTIST = "John \"\"The Man\"\" Doe"
...