sourcecode

VB의 여러 줄 문자열.그물

codebag 2023. 4. 8. 08:25
반응형

VB의 여러 줄 문자열.그물

VB에 여러 줄 문자열을 사용할 수 있는 방법이 있습니까?Python과 같은 NET

a = """
multi
line
string
"""

아니면 PHP?

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

물론 그렇지 않은 것은

"multi" & _
"line

XML Literals 를 사용하면, 같은 효과를 얻을 수 있습니다.

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.

자세한 내용은 Roslyn New-Language-Features-in-VB-14 Github 저장소에 추가됩니다.

VB.Net에는 이러한 기능이 없으며 Visual Studio 2010에는 제공되지 않습니다.지윈이 참조하고 있는 특징을 암묵적인 선 연속이라고 부릅니다.여러 줄의 문이나 식에서 _를 제거하는 것과 관련이 있습니다.이렇게 하면 _로 여러 줄 문자열을 종료할 필요는 없지만 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 미리보기에서 사용할 수 있습니다. http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs (의 이전 버전을 대상으로 하는 경우에도 VS2015를 사용할 수 있습니다).NET 프레임워크)

Dim multiline = "multi
line
string"

VB 문자열은 기본적으로 C# verbatim 문자열과 동일합니다.\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코드에 넣을 수 있어요단축키를 바인드할 경우 보너스 포인트(빠른 시간:자동 키)를 사용하여 붙여넣기 버퍼에 있는 모든 항목에 대해 이 작업을 수행합니다.SQL 포맷터에서도 같은 아이디어가 적합합니다.

XElement 클래스를 사용하는 vb.net의 여러 줄 문자열 리터럴.

Imports System.Xml.Linq

Public Sub Test()

dim sOderBy as string = ""

dim xe as XElement = <SQL>
                SELECT * FROM <%= sTableName %>
                 <ORDER_BY> ORDER BY <%= sOrderBy %></ORDER_BY>
                 </SQL>

'** conditionally remove a section 
if sOrderBy.Length = 0 then xe.<ORDER BY>.Remove

'** convert XElement value to a string 
dim sSQL as String = xe.Value

End Sub

언어로서 VB의 가장 짜증나는 점은 바로 그것이다.정말이지, 한번은 파일에 문자열을 쓰고 코드 같은 걸 쓴 적이 있어요.

Dim s as String = file_get_contents("filename.txt")

필요하다면 SQL 서버에서 직접 쿼리를 테스트할 수 있습니다.

현재 방법은 SQL Server에 저장된 프로시저를 사용하여 쿼리 등에 파라미터를 전달할 수 있도록 호출하는 것입니다.

<![CDATA]와 <%=>를 모두 변수로 사용하는 방법을 알게 되었습니다.

기본적으로 VB 변수 전에 CDATA 태그를 종료한 후 다시 추가해야 CDATA가 VB 코드를 캡처하지 않습니다.CDATA 블록이 여러 개 존재하기 때문에 코드 블록 전체를 태그로 감싸야 합니다.

Dim script As String = <code><![CDATA[
  <script type="text/javascript">
    var URL = ']]><%= domain %><![CDATA[/mypage.html';
  </script>]]>
</code>.value

이 문자열을 리소스 파일(예: "내 프로젝트"/리소스)에 삽입한 후 다음을 사용하여 가져올 수 있습니다.

 Dim a = My.Resources.Whatever_you_chose

면책사항:나는 비단뱀을 좋아한다.여러 줄의 문자열이 하나의 이유일 뿐입니다.

하지만 VB도 해요.넷, 더 읽기 쉬운 긴 문자열에 대한 단축키입니다.

  Dim lines As String() = {
    "Line 1",
    "Line 2",
    "Line 3"
  }
  Dim s As String = Join(lines, vbCrLf)

다음과 같이 XML을 사용할 수 있습니다.

dim vrstr as string = <s>
    some words
    some words
    some
    words
</s>

Visual studio 2010(VB NET)에서 다음을 시도하면 정상적으로 작동합니다.

Dim HtmlSample As String = <anything>what ever you want to type here with multiline strings</anything>

dim Test1 as string =<a>onother multiline example</a>

Visual Studio 2015의 일부로 Visual Basic 14에서 제공 https://msdn.microsoft.com/en-us/magazine/dn890368.aspx

그러나 R#에서는 아직 지원되지 않습니다.좋은 소식은 그들이 곧 지원받을 것이라는 것입니다!Youtrack에서 투표하여 JetBrains에게도 필요함을 알려주시기 바랍니다.

VB에 XML 리터럴이 필요한 경우.라인 코드 변수가 있는 넷에서는, 다음과 같이 실시합니다.

<Tag><%= New XCData(T.Property) %></Tag>

읽기 쉬운 문제이기 때문에 다음 코드를 사용하고 있습니다.

MySql = ""
MySql = MySql & "SELECT myTable.id"
MySql = MySql & " FROM myTable"
MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text

를 사용할 수도 있습니다.System.Text.StringBuilder다음과 같은 방법으로 클래스:

Dim sValue As New System.Text.StringBuilder
sValue.AppendLine("1st Line")
sValue.AppendLine("2nd Line")
sValue.AppendLine("3rd Line")

다음으로 다음 명령을 사용하여 여러 줄 문자열을 가져옵니다.

sValue.ToString()

사용하다vbCrLf또는vbNewLine테스트한 MessageBoxes 및 기타 많은 컨트롤에서 작동합니다.

Dim str As String
str = "First line" & vbCrLf & "Second line"
MsgBox(str)
str = "First line" & vbNewLine & "Second line"
MsgBox(str)

두 줄의 동일한 Message Box가 표시됩니다.

아니요, VB.NET에는 아직 이러한 기능이 없습니다.VB(visual basic 10)의 다음 버전에서 사용할 수 있습니다(링크).

C# 같은 경우(VB가 없습니다).Net installed) 문자열 앞에 @ 를 붙일 수 있습니다.

foo = @"Multiline
String"

이것은 @"C:와 같은 경우에도 유용합니다.\Windows\System32\" - 기본적으로 이스케이프를 끄고 멀티라인을 켭니다.

언급URL : https://stackoverflow.com/questions/706382/multiline-strings-in-vb-net

반응형