의 형식 문자열에서 가새(곡선 괄호)를 이스케이프하는 방법.그물
다음을 사용하여 브래킷을 탈출하는 방법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);
출력 방법{
당신이 사용하는{{
그리고 출력하기 위해}
당신이 사용하는}}
.
또는 이제 C# 문자열 보간을 이렇게 사용할 수도 있습니다(C# 6.0에서 사용 가능한 기능).
이스케이프 브래킷: 문자열 보간 $("").C# 6.0의 새로운 기능입니다.
var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
// The output will be: foo {1, 2, 3}
예, 출력으로{
에string.Format
당신은 이렇게 탈출해야 합니다.{{
다음과 같이 출력합니다."foo {1,2,3}"
.
String val = "1,2,3";
String.Format(" foo {{{0}}}", val);
그러나 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 t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);
페이지에 하나의 브래킷만 표시되는 이중 개방 브래킷과 이중 폐쇄 브래킷을 사용할 수 있습니다.
곱슬곱슬한 괄호 AND를 탈출하고 문자열 보간법을 사용하는 것은 흥미로운 도전이 됩니다.문자열 보간 파싱을 피하려면 4중괄호를 사용해야 합니다.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#의 보간 문자열과 "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}"
아주string
변수delimiter
.
C# 코드:
string delimiter= "{{CR}}{{LF}}";
참고: 특수 문자를 이스케이프하려면 일반적으로 \를 사용해야 합니다.컬리 브래킷 열기용{
하나 더 쓰시오, 예를 예로.{{
곱슬곱슬한 브래킷을 닫는 데 사용}
하나를 더 쓰면,}}
.
이렇게 사용할 수도 있습니다. var outVal = $" foo {"{"}{inVal}{"}"} --- {"{"}Also Like This{"}"}"
탈출 브래킷:문자열 보간 $("""):
이제 C# 문자열 보간을 다음과 같이 사용할 수도 있습니다(C# 6.0에서 사용 가능한 기능).
var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
// The output will be: foo {1, 2, 3}
는 탈출싶었하고다니습.{{Id}}
내가 끈으로 된 인터폴에 있는 동안.
이것은 저에게 효과가 있었습니다.
string url = $"/Details/{{{{Id}}}}";
출력:
/Details/{{Id}}
언급URL : https://stackoverflow.com/questions/91362/how-to-escape-braces-curly-brackets-in-a-format-string-in-net
'source' 카테고리의 다른 글
PowerShell의 변수에 저장된 명령 실행 (0) | 2023.04.26 |
---|---|
패키지 '@angular/cli'는 종속성이 아닙니다. (0) | 2023.04.26 |
명령 프롬프트에서 Python 명령이 작동하지 않음 (0) | 2023.04.26 |
두 NSD 날짜를 비교하는 방법어느 것이 더 최근입니까? (0) | 2023.04.26 |
Android Studio 프로젝트의 .gitignore에는 무엇이 있어야 합니까? (0) | 2023.04.26 |