문제

사용할 때 대괄호를 어떻게 이스케이프할 수 있습니까? string.Format.예를 들어:

String val = "1,2,3"
String.Format(" foo {{0}}", val); 

이 예제는 예외를 발생시키지 않지만 문자열을 출력합니다. foo {0}

대괄호를 벗어날 수 있는 방법이 있나요?

도움이 되었습니까?

해결책

당신이 출력하려면 foo {1, 2, 3} 다음과 같은 작업을 수행해야 합니다.

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);

출력하려면 { 너는 사용한다 {{ 그리고 출력하려면 } 너는 사용한다 }}.

다른 팁

예 출력 { ~에 string.Format 이대로 탈출해야 해 {{

그래서 이거

String val = "1,2,3";
String.Format(" foo {{{0}}}", val);

출력됩니다 "foo {1,2,3}".

하지만 C#의 디자인 버그에 대해 알아야 합니다. 즉, 위의 논리를 사용하면 아래 코드가 {24.00}을 인쇄한다고 가정할 수 있습니다.

int i = 24;
string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00}

그러나 이것은 {N}을 인쇄합니다.이는 C#이 이스케이프 시퀀스와 형식 문자를 구문 분석하는 방식 때문입니다.위의 경우 원하는 값을 얻으려면 대신 이것을 사용해야 합니다.

String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00}

참고 기사문자열.형식 고정 그리고문자열 형식 FAQ

거의 다 왔어!중괄호의 이스케이프 시퀀스는 다음과 같습니다. {{ 또는 }} 귀하의 예에서는 다음을 사용합니다.

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);

페이지에 하나의 괄호만 표시하는 이중 여는 괄호와 이중 닫는 괄호를 사용할 수 있습니다.

탈출 중괄호 그리고 사용 문자열 보간 흥미로운 도전을 하게 만듭니다.당신은 사용해야합니다 4중 괄호 탈출하기 위해 문자열 보간 구문 분석 및 string.format 파싱.

이스케이프 브래킷:문자열 보간 $("") 및 String.Format

string localVar = "dynamic";
string templateString = $@"<h2>{0}</h2><div>this is my {localVar} template using a {{{{custom tag}}}}</div>";
string result = string.Format(templateString, "String Interpolation");

// OUTPUT: <h2>String Interpolation</h2><div>this is my dynamic template using a {custom tag}</div>

C#에서 (클래스/객체를 직렬화하지 않고) 임시로 json 문자열을 작성하는 방법을 찾기 위해 왔습니다.즉, 사용하는 동안 중괄호와 따옴표를 이스케이프하는 방법 C#의 보간된 문자열 그리고 "축어적 문자열 리터럴"('@' 접두사가 있는 큰따옴표 문자열), 예:...

var json = $@"{{""name"":""{name}""}}";
[TestMethod]
public void BraceEscapingTest()
{
    var result = String.Format("Foo {{0}}", "1,2,3");  //"1,2,3" is not parsed
    Assert.AreEqual("Foo {0}", result);

    result = String.Format("Foo {{{0}}}", "1,2,3");
    Assert.AreEqual("Foo {1,2,3}", result);

    result = String.Format("Foo {0} {{bar}}", "1,2,3");
    Assert.AreEqual("Foo 1,2,3 {bar}", result);

    result = String.Format("{{{0:N}}}", 24); //24 is not parsed, see @Guru Kara answer
    Assert.AreEqual("{N}", result);

    result = String.Format("{0}{1:N}{2}", "{", 24, "}");
    Assert.AreEqual("{24.00}", result);

    result = String.Format("{{{0}}}", 24.ToString("N"));
    Assert.AreEqual("{24.00}", result);
}

또는 이와 같이 C# 문자열 보간을 사용할 수 있습니다(C# 6.0에서 사용 가능한 기능).

var value = "1, 2, 3";
var output = $" foo {{{value}}}";

내 목표:

값을 할당해야 했어요 "{CR}{LF}"string 변하기 쉬운 delimiter.

코드 C#:

string delimiter= "{{CR}}{{LF}}";

메모:일반적으로 특수 문자를 이스케이프하려면 를 사용해야 합니다.중괄호 {를 열려면 {{와 같은 추가 항목을 사용하세요.중괄호 }를 닫으려면 하나의 추가 }}를 사용하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top