source

동사 문자열 리터럴에서 이중 따옴표를 피할 수 있습니까?

itover 2023. 7. 16. 18:10
반응형

동사 문자열 리터럴에서 이중 따옴표를 피할 수 있습니까?

C#의 동사 문자열 리터럴(@"foo")에서 백슬래시는 이스케이프로 처리되지 않으므로 \"를 수행하여 이중 따옴표를 얻는 것은 효과가 없습니다.동사적 문자열 리터럴로 이중 따옴표를 얻을 수 있는 방법이 있습니까?

이것은 당연히 작동하지 않습니다.

string foo = @"this \"word\" is escaped";

중복된 이중 따옴표를 사용합니다.

@"this ""word"" is escaped";

출력:

this "word" is escaped

큰따옴표를 사용합니다.

string foo = @"this ""word"" is escaped";

더 많은 정보를 추가하기 위해, 당신의 예는 다음과 같이 없이 작동할 것입니다.@기호(\를 사용하여 탈출하는 것을 방지함), 다음과 같은 방식:

string foo = "this \"word\" is escaped!";

두 가지 방식으로 모두 작동하지만, 예를 들어 파일 이름(문자열에 \가 많은 경우)을 사용하는 것이 더 쉽기 때문에 이중 따옴표 스타일을 사용하는 스타일을 선호합니다.

이렇게 하면 C# 리터럴과 같은 질문을 해결할 수 있습니다.

다음은 링크된 콘텐츠의 표입니다.

정규 리터럴 동사형 문자 결과 문자열
"Hello" @"Hello" Hello
"Backslash: \\" @"Backslash: \" Backslash: \
"Quote: \"" @"Quote: """ Quote: "
"CRLF:\r\nPost CRLF" @"CRLF:
Post CRLF"
CRLF:
Post CRLF

업데이트: C#11 미리보기 기능 포함 - 원시 문자열 리터럴

string foo1 = """
   this "word" is escaped
   """;

string foo2 = """this "word" is escaped""";

기록:

GitHub에는 원시 문자열 리터럴에 대한 더 나은 지원을 제공하는 C# 언어에 대한 제안이 있습니다.한 가지 유효한 답변은 C# 팀이 언어에 새로운 기능(예: 트리플 쿼트 - 파이썬)을 추가하도록 권장하는 것입니다.

https://github.com/dotnet/csharplang/discussions/89#discussioncomment-257343 을 참조하십시오.

설명서에 나와 있듯이 다음과 같습니다.

단순한 탈출 시퀀스는 문자 그대로 해석됩니다따옴표 이스케이프 시퀀스만("")는 문자 그대로 해석되지 않으며, 하나의 이중 따옴표를 생성합니다.또한, 동사적으로 보간된 문자열 브레이스 이스케이프 시퀀스의 경우 ({{그리고.}})는 문자 그대로 해석되지 않으며 단일 대괄호 문자를 생성합니다.

언급URL : https://stackoverflow.com/questions/1928909/can-i-escape-a-double-quote-in-a-verbatim-string-literal

반응형