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.
詳細は、Roslyn New-Language-Features-in-VB-14 Githubリポジトリに追加されます。
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プレビューで、その後出て使用することができます- 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
さて、あなたはあなたのpythonを使い始めているようですので、あなたのテキストをpythonにコピーすることをお勧めします:
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 [と変数の<%=の両方を使用する方法を理解したので、心配することなくコーディングできます。
基本的に、CDATAタグがVB変数の前に終了し、その後に再度追加して、CDATAがVBコードをキャプチャしないようにする必要があります。複数のCDATAブロックがあるので、コードブロック全体をタグで囲む必要があります。
Dim script As String = <code><![CDATA[
<script type="text/javascript">
var URL = ']]><%= domain %><![CDATA[/mypage.html';
</script>]]>
</code>.value
あなたはこのために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.Netでラインコード変数を使用して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
いいえ、VB.NETにはまだそのような機能はありません。VB(Visual Basic 10)の次のイテレーションで使用できるようになります(リンク)
C#のような場合(VB.Netがインストールされていません)、@を文字列の前に付けることができます
foo = @"Multiline
String"
これは、@ "C:\ Windows \ System32 \"などの場合にも役立ちます。基本的に、エスケープがオフになり、複数行がオンになります。