Python과 같은 VB.NET에서 여러 줄 문자열을 갖는 방법이 있습니까?
a = """
multi
line
string
"""
아니면 PHP?
$a = <<<END
multi
line
string
END;
물론 그렇지 않은 것
"multi" & _
"line
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
여러 줄 문자열 리터럴은 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 기능 이 추가되었습니다 .
s="... a=~someint~ ..."
다음 s=s.Replace("~someint~', SomeInt)
.
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()
문자열에서 <>를 허용합니다.
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 포매터에도 동일한 아이디어가 효과적입니다.
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
변수에 <! [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
면책 조항 : 나는 파이썬을 좋아합니다. 여러 줄 문자열은 한 가지 이유 일뿐입니다.
그러나 VB.Net도 수행하므로 더 읽기 쉬운 긴 문자열에 대한 바로 가기가 있습니다.
Dim lines As String() = {
"Line 1",
"Line 2",
"Line 3"
}
Dim s As String = Join(lines, vbCrLf)
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 #에서는 지원되지 않습니다. 좋은 소식은 곧 지원 될 것입니다! JetBrains에 필요한 정보를 제공하려면 Youtrack 에 투표하십시오 .
이것은 가독성 문제이므로 다음 코드를 사용했습니다.
MySql = ""
MySql = MySql & "SELECT myTable.id"
MySql = MySql & " FROM myTable"
MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text
아니요, VB.NET에는 아직 그러한 기능이 없습니다. VB (visual basic 10)의 다음 반복에서 사용할 수 있지만 ( link )