[string] VB.NET의 여러 줄 문자열

Python과 같은 VB.NET에서 여러 줄 문자열을 갖는 방법이 있습니까?

a = """
multi
line
string
"""

아니면 PHP?

$a = <<<END
multi
line
string
END;

물론 그렇지 않은 것

"multi" & _
"line



답변

XML 리터럴 을 사용 하여 비슷한 효과를 얻을 수 있습니다 .

Imports System.XML
Imports System.XML.Linq
Imports System.Core

Dim s As String = <a>Hello
World</a>.Value

특수 문자가있는 경우 CDATA 블록을 사용해야합니다.

Dim s As String = <![CDATA[Hello
World & Space]]>.Value

2015 년 업데이트 :

여러 줄 문자열 리터럴은 Visual Basic 14 ( Visual Studio 2015 ) 에 도입되었습니다 . 위의 예는 이제 다음과 같이 쓸 수 있습니다.

Dim s As String = "Hello
World & Space"

MSDN article isn't updated yet (as of 2015-08-01), so check some answers below for details.

VB-14 Github 저장소에 Roslyn New-Language-Features 기능 이 추가되었습니다 .


답변

VB.Net에는 이러한 기능이 없으며 Visual Studio 2010에서는 제공 되지 않을 것입니다. jirwin이 참조하는 기능을 암시 적 라인 연속이라고합니다. 여러 줄로 된 문장이나 표현식에서 _를 제거하는 것과 관련이 있습니다. 이렇게하면 _로 여러 줄 문자열을 종료 할 필요가 없지만 VB에는 여전히 여러 줄 문자열 리터럴이 없습니다.

여러 줄 문자열의 예

Visual Studio 2008

Dim x = "line1" & vbCrlf & _
        "line2"

Visual Studio 2010

Dim x = "line1" & vbCrlf &
        "line2"


답변

이 변형을 사용했습니다.

     Dim query As String = <![CDATA[
        SELECT
            a.QuestionID
        FROM
            CR_Answers a

        INNER JOIN
            CR_Class c ON c.ClassID = a.ClassID
        INNER JOIN
            CR_Questions q ON q.QuestionID = a.QuestionID
        WHERE
            a.CourseID = 1
        AND
            c.ActionPlan = 1
        AND q.Q_Year = '11/12'
        AND q.Q_Term <= (SELECT CurrentTerm FROM CR_Current_Term)
    ]]>.Value()

문자열에서 <>를 허용합니다.


답변

Visual Studio 2015부터 여러 줄 문자열을 사용할 수 있습니다.

Dim sql As String = "
    SELECT ID, Description
    FROM inventory
    ORDER BY DateAdded
"

유용성을 극대화하기 위해 문자열 보간 과 결합 할 수 있습니다 .

Dim primaryKey As String = "ID"
Dim inventoryTable As String = "inventory"

Dim sql As String = $"
    SELECT {primaryKey}, Description
    FROM {inventoryTable}
    ORDER BY DateAdded
"

참고 보간 된 문자열로 시작하는 것이 $당신이 알아서해야 할 ", {그리고 }내부에 포함 – 변환을 그들에게로 "", {{또는}} 각각.

위의 코드 예제에서 보간 된 부분의 실제 구문 강조 표시 를 볼 수 있습니다 .

여기에 이미지 설명을 입력하십시오

Visual Studio 편집기에 의한 인식이 리팩토링과 함께 작동하는지 (예 : 변수의 대량 이름 변경) 궁금하다면 코드 리팩토링이 이것과 함께 작동합니다. 또한 IntelliSense, 참조 횟수 또는 코드 분석도 지원합니다.


답변

여러 줄 문자열 리터럴이 Visual Basic 14.0에 도입되었습니다-https: //roslyn.codeplex.com/discussions/571884

이제 VS2015 Preview에서 http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs를 사용할 수 있습니다 (이전 버전을 타겟팅 할 때도 VS2015를 계속 사용할 수 있음에 유의하십시오) .NET 프레임 워크 버전)

Dim multiline = "multi
line
string"

VB 문자열은 기본적으로 C # 동사 문자열과 동일합니다. \ n과 같은 백 슬래시 이스케이프 시퀀스를 지원하지 않으며 문자열 내에서 줄 바꿈을 허용하며 큰 따옴표 “”로 따옴표 기호를 이스케이프합니다.


답변

이것은 나에게 정말 유용한 기사 였지만 아무도 연결 하는 방법에 대해 언급하지 않았습니다. 99 %의 시간을 할애 해야하는 변수를 보내고 싶을 때 .

<% = 변수 %>

방법은 다음과 같습니다.

<SQL>
SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>'
</SQL>.Value


답변

글쎄, 파이썬을 사용하는 것처럼 보이므로 텍스트를 파이썬으로 복사하는 것이 좋습니다.

 s="""this is gonna
last quite a
few lines"""

그런 다음 :

  for i in s.split('\n'):
    print 'mySB.AppendLine("%s")' % i

#    mySB.AppendLine("this is gonna")
#    mySB.AppendLine("last quite a")
#    mySB.AppendLine("few lines")

또는

  print ' & _ \n'.join(map(lambda s: '"%s"' % s, s.split('\n')))

#    "this is gonna" & _
#    "last quite a" & _
#    "few lines"

적어도 그것을 복사하여 VB 코드에 넣을 수 있습니다. 붙여 넣기 버퍼에있는 모든 작업에 대해 핫키를 바인딩하는 경우 보너스 포인트 : Autohotkey 를 사용하면 가장 빠릅니다 . SQL 포매터에도 동일한 아이디어가 효과적입니다.