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


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.