.NET의 형식 문자열에서 중괄호 (중괄호)를 이스케이프하는 방법
을 사용하여 대괄호를 어떻게 이스케이프 할 수 있습니까 string.Format
? 예를 들면 :
String val = "1,2,3"
String.Format(" foo {{0}}", val);
이 예제는 예외를 throw하지 않지만 문자열을 출력합니다. foo {0}
괄호를 피할 수있는 방법이 있습니까?
출력 foo {1, 2, 3}
하려면 다음과 같이해야합니다.
string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);
A 출력에 {
사용 {{
하고 출력에 }
당신이 사용 }}
.
예 출력 {
에서 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}
참조 기사 String.Format gottach 및 String Formatting 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 #에서 Interpolated Strings 및 " verbatim string literals "( '@'접두사가있는 큰 따옴표 문자열) 를 사용하는 동안 중괄호와 따옴표를 이스케이프하는 방법은 다음과 같습니다.
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}"
A를 string
변수 delimiter
.
코드 C # :
string delimiter= "{{CR}}{{LF}}";
참고 : 일반적으로 특수 문자를 이스케이프하려면를 사용해야합니다. 중괄호 {를 열려면 {{과 같은 추가 항목을 사용하십시오. 닫는 중괄호}에는 추가}}를 사용하십시오.
'programing tip' 카테고리의 다른 글
개인, 공용 및 보호 상속의 차이점 (0) | 2020.09.28 |
---|---|
데이터베이스와 함께 애플리케이션 제공 (0) | 2020.09.28 |
Firefox 또는 Chrome에서 수동으로 HTTP POST 요청을 실행하려면 어떻게합니까? (0) | 2020.09.28 |
'ArrayList 변환 (0) | 2020.09.28 |
grep을 사용하여 Linux에서 파일 이름 만 표시하려면 어떻게해야합니까? (0) | 2020.09.28 |