백 슬래시가 포함 된 경로 문자열에 대해 인식 할 수없는 이스케이프 시퀀스


91

다음 코드는 각 백 슬래시의 "인식 할 수없는 이스케이프 시퀀스"에 대한 컴파일러 오류를 생성합니다.

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

백 슬래시를 피해야할까요? 어떻게하나요?

답변:


225

매번 이중 백 슬래시를 사용할 수 있습니다.

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

또는 @ 기호 사용

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

이것은 또한 내가 가지고 있던 Html.TextBoxFor 문제를 해결하는 데 도움이되었습니다. 정규식 앞에 @를 사용하면 이중 백 슬래시가 실패한 인식되지 않는 이스케이프 시퀀스가 ​​해결되었습니다.
— Joshua

27

이 시도:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

문제는 문자열에서 a \가 이스케이프 문자라는 것입니다. @부호를 사용하여 컴파일러에게 이스케이프 문자를 무시하도록 지시합니다.

다음을 이스케이프하여 얻을 수도 있습니다 \.

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

4
FWIW 및 Googlebot을 돕기 위해 @ ""라는 용어는 "verbatim string literal"입니다. "문자열 리터럴"이라고도 들었지만 기술적으로는 ""의 "정규 문자열 리터럴"을 포함합니다. msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
— Mark Brackett

13
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

사소한 메모에서 "는" "와 같이 이스케이프 처리됩니다.
— flq

9

예에서와 같이 문자열이 파일 경로 인 경우 Unix 스타일 파일 경로를 사용할 수도 있습니다.

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";

그러나 다른 답변에는 C #에서 문자열 이스케이프에 대한 더 일반적인 솔루션이 있습니다.


5
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

이것은 작동하거나 이전 예제도 작동합니다. @ "..."는 따옴표 사이의 모든 것을 문자 그대로 취급하는 것을 의미합니다.

@"Hello
world"

리터럴 개행을 포함합니다. 나는 더 오래된 학교이고 "\"를 "\\"로 탈출하는 것을 선호합니다.


그러나 배는 "문자 그대로 처리되지 않습니다.
— 윙어 Sendon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.