.NET에서 둘 다 \r
또는 \n
문자열 리터럴을 제공 할 수 있지만 Environment.NewLine
정적 속성 과 같은 “새 줄”특수 문자를 삽입하는 방법이 있습니까?
답변
간단한 옵션은 다음과 같습니다.
-
string.Format
:string x = string.Format("first line{0}second line", Environment.NewLine);
-
문자열 연결 :
string x = "first line" + Environment.NewLine + "second line";
-
문자열 보간 (C # 6 이상) :
string x = $"first line{Environment.NewLine}second line";
어디서나 \ n을 사용하고 다음을 대체 할 수 있습니다.
string x = "first line\nsecond line\nthird line".Replace("\n",
Environment.NewLine);
실행시에만 값을 사용할 수 있으므로이 값을 문자열 상수로 만들 수 없습니다 Environment.NewLine
.
답변
Environment.NewLine을 포함하는 const 문자열을 원하면 다음과 같이 할 수 있습니다.
const string stringWithNewLine =
@"first line
second line
third line";
편집하다
이것은 const 문자열에 있기 때문에 컴파일 타임에 수행되므로 컴파일러는 개행을 해석합니다. 이 동작을 설명하는 참조를 찾을 수 없지만 의도 한대로 작동 함을 증명할 수 있습니다. 나는이 코드를 Windows와 Ubuntu (모노 포함)에서 컴파일 한 다음 분해하고 결과는 다음과 같습니다.
보시다시피, Windows에서 줄 바꿈은 \ r \ n으로, 우분투에서는 \ n으로 해석됩니다.
답변
var sb = new StringBuilder();
sb.Append(first);
sb.AppendLine(); // which is equal to Append(Environment.NewLine);
sb.Append(second);
return sb.ToString();
답변
형식 문자열에서 Environment.NewLine을 편리하게 배치하는 또 다른 방법입니다. 아이디어는 문자열을 평소와 같이 형식화하지만 텍스트의 {nl}을 Environment.NewLine으로 대체하는 문자열 확장 메소드를 작성하는 것입니다.
용법
" X={0} {nl} Y={1}{nl} X+Y={2}".FormatIt(1, 2, 1+2);
gives:
X=1
Y=2
X+Y=3
암호
///<summary>
/// Use "string".FormatIt(...) instead of string.Format("string, ...)
/// Use {nl} in text to insert Environment.NewLine
///</summary>
///<exception cref="ArgumentNullException">If format is null</exception>
[StringFormatMethod("format")]
public static string FormatIt(this string format, params object[] args)
{
if (format == null) throw new ArgumentNullException("format");
return string.Format(format.Replace("{nl}", Environment.NewLine), args);
}
노트
-
ReSharper에서 매개 변수를 강조 표시하려면 위의 방법에 속성을 추가하십시오.
[StringFormatMethod ( “format”)]
-
이 구현은 단순히 String.Format보다 효율적이지 않습니다.
-
아마도이 질문에 관심이있는 사람은 다음 질문에도 관심이있을 것
입니다 .C #의 명명 된 문자열 형식
답변
string myText =
@"<div class=""firstLine""></div>
<div class=""secondLine""></div>
<div class=""thirdLine""></div>";
그것은 아닙니다 :
string myText =
@"<div class=\"firstLine\"></div>
<div class=\"secondLine\"></div>
<div class=\"thirdLine\"></div>";
답변
static class MyClass
{
public const string NewLine="\n";
}
string x = "first line" + MyClass.NewLine + "second line"
답변
최신 .net 버전에서는 리터럴 앞에 $를 사용하여 다음과 같이 변수를 사용할 수 있습니다.
var x = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3";