programing

다중 행 문자열 변수

starjava 2023. 5. 27. 09:16
반응형

다중 행 문자열 변수

.Net(C# 및 VB.NET)에서 다음과 같은 여러 줄 텍스트가 있는 경우:

__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       

변수를 이렇게 설정할 수 있습니까?

Dim Logo As String = ("
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ")

Console.WriteLine(Logo)

이것 대신에:

    Console.WriteLine("__   __                                         ")
    Console.WriteLine("\ \ / /                | |                      ")
    Console.WriteLine(" \ V /___  _   _ _ __  | |     ___   __ _  ___  ")
    Console.WriteLine("  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ ")
    Console.WriteLine("  | | (_) | |_| | |    | |___| (_) | (_| | (_) |")
    Console.WriteLine("  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ ")
    Console.WriteLine("                                     __/ |      ")
    Console.WriteLine("                                    |___/       ")

그렇지 않으면:

            Dim Logo As String = ( _
"__   __                 _                       " & vbNewLine & _
"\ \ / /                | |                      " & vbNewLine & _
" \ V /___  _   _ _ __  | |     ___   __ _  ___  " & vbNewLine & _
"  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ " & vbNewLine & _
"  | | (_) | |_| | |    | |___| (_) | (_| | (_) |" & vbNewLine & _
"  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ " & vbNewLine & _
"                                     __/ |      " & vbNewLine & _
"                                    |___/       ")

처음에는 c#로 표시했지만 VB 코드를 표시합니다.c#의 경우: 사용@지정자:

string myText =
@"line 1
line 2
line 3"

문자열의 시작 부분에 빈 줄을 사용하지 않으려면 다음을 입력해야 합니다.@"제가 위에서 했던 것처럼, 당신의 텍스트의 첫 줄과 같은 줄에 있습니다.

VB.NET의 경우 이를 직접 지원하지는 않지만 다음 답변에서 nice hack을 사용하여 해결할 수 있습니다.

Dim s As String = <a>line 1
line 2
line 3</a>.Value

문자열 리소스를 만드는 것도 고려해 보십시오. 여기에 줄 바꿈을 추가할 수 있습니다( 답변의 참고 사항에 따라 shift-enter를 사용해야 함). 다음과 유사한 방법으로 리소스를 로드합니다.

Dim myString As String = My.Resources.MyString

Visual Studio 2015용 업데이트: 분명히 vb.net 은 여기서 어려운 경우였지만, VS2015 기준으로 c# 동사 문자열과 유사한 방식으로 다중 줄 문자열을 지원하지만 이전은 지원하지 않습니다.@.

문자열에 포함된 줄 구분 기호는 선택한 편집자가 제공하는 실제 줄 구분 기호입니다.VS의 경우 이는\r\n.

예:

여기에 이미지 설명 입력

출처는 여기입니다.

VS2015 / C#6에 도입된 새로운 보간 문자열의 경우 문자열 앞에 다음과 같이 붙입니다.$@C#:

string multiline = $@"
[configuration]
name=Fred
age={age}";

VB.NET에서는 다음 항목을 생략합니다.@:

Dim multiline As String = $"
[configuration]
name=Fred
age={age}"

C#에서는 다음과 같이 원시 문자열(@)을 사용할 수 있습니다.

        private string Logo = @"
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ";

Verbatim 문자열을 사용합니다.

@기호는 문자열 생성자에게 줄 바꿈을 무시하도록 합니다.

자세한 내용은 MSDN을 참조하십시오.문자열 리터럴 대 Verbatim 문자열

예를들면

string verbatim = @"v
                    e
                    r
                    batim"

당신의 예

Dim Logo As String = (@"
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ")

Console.WriteLine(Logo)

예, 사용해야 합니다.@기호:

string t = @"t
e
s
t"

일종의...

이 작업은 다음과 같습니다.

Dim logo = " " & vbCrLf & _
"__   __                                         " & vbCrLf & _
"\ \ / /                | |                      " & vbCrLf & _

기타.

원시 문자열 리터럴이 포함된 C# 11 및 .NET 7 버전:

string multilineLogo = """
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       
""";
Dim MultilineLogo = """
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       
""";

언급URL : https://stackoverflow.com/questions/16107697/multiline-string-variable

반응형