Nice programing

C # 6에서 문자열 보간과 함께 이스케이프 문자를 사용하는 방법은 무엇입니까?

nicepro 2020. 10. 18. 19:34
반응형

C # 6에서 문자열 보간과 함께 이스케이프 문자를 사용하는 방법은 무엇입니까?


나는 문자열 보간을 사용하고 그것을 좋아했지만 출력에 백 슬래시를 포함하려고 시도했지만 작동하지 못하는 문제가 있습니다.

내가 원하는 건 이런거 ..

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"

콤보의 출력이

myDomain\myUserName

내가 얻는 것은 \ 이스케이프 문자라는 구문 오류입니다. \\를 입력하면 구문 오류가 사라지지만 출력은 myDomain \\ myUsername입니다.

보간 된 문자열에 이스케이프 문자를 어떻게 포함시킬 수 있습니까?


백 슬래시 ( \)로 이스케이프 하면 중괄호를 제외한 모든 문자에서 작동합니다.

당신이 중괄호를 탈출하려고 (경우 {또는 })을 사용해야합니다 {{또는 }}https://msdn.microsoft.com/en-us/library/dn961160.aspx .

... 모든 이중 중괄호 ( "{{"및 "}}")는 단일 중괄호로 변환됩니다.


$ @를 모두 사용하여이를 수행 할 수 있습니다. 순서가 중요합니다.

var combo = $@"{domain}\{userName}";

$"{domain}\\{user}"

잘 작동합니다. 이스케이프는 평소처럼 작동합니다 (이스케이프 할 때 제외 {). 적어도 .NET 4.6 및 VS 14.0.22823 D14REL에서.

어떤 이유로 작동하지 않는 경우 (아마도 이전 버전의 컴파일러를 사용하고 있습니까?) 더 명시 적으로 시도 할 수도 있습니다.

$"{domain}{@"\"}{user}"

안녕하세요, 보간 된 문자열에서 백 슬래시를 이스케이프하는 규칙은 백 슬래시와 중복됩니다.

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\\{userName}";

콘솔 출력

그러나 보간 된 문자열을 축어 문자열로 사용하는 경우 백 슬래시를 이스케이프 할 필요가 없습니다.

var domain = "mydomain";
var userName = "myUserName";
var combo = $@"{domain}\{userName}";

그리고 당신은 같은 것을 얻습니다.

콘솔 출력

보간 된 문자열에 대한 자습서 : 비디오 보간 된 문자열 참조


Eduardo가 맞습니다. 두 배로 늘려 중괄호를 이스케이프합니다. 따라서 도메인 변수를 {mydomain}으로 출력하려면 다음을 수행해야합니다.

$"{{{domain}}}";

또한 현재 날짜가 2016 년 9 월 1 일이라고 가정하면 다음과 같이됩니다.

$"The date is {DateTime.Now}";

현지화에 따라 "날짜는 2016/09/01 3:04:48 PM"과 같은 결과가 출력됩니다. 다음을 수행하여 날짜 형식을 지정할 수도 있습니다.

$"The date is {DateTime.Now : MMMM dd, yyyy}";

그러면 "The date is September 1, 2016"이 출력됩니다. 보간 된 문자열은 훨씬 더 읽기 쉽습니다. 좋은 대답 Eduardo.


내가 이해하지 않았다면. 해결책은 정말 간단합니다

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{{{domain}}}\\{{{userName}}}";
Console.WriteLine(combo);

나는 거기에 제공된 좋은 참조뿐만 아니라 birdamongmen 답변을 공유합니다. 도움이되기를 바랍니다. 내 5 센트

참고 URL : https://stackoverflow.com/questions/31333096/how-to-use-escape-characters-with-string-interpolation-in-c-sharp-6

반응형