158 votes

Chaînes multilignes dans VB.NET

Existe-t-il un moyen d'avoir des chaînes multilignes dans VB.NET comme python

 a = """
multi
line
string
"""
 

ou php

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

?

Bien sûr, quelque chose qui n'est pas

 "multi" & _
"line
 

236voto

Vincenzo Alcamo Points 1239

Vous pouvez utiliser les littéraux XML pour obtenir un effet similaire:

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

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

N'oubliez pas que si vous avez des caractères spéciaux, vous devez utiliser un bloc CDATA:

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

52voto

JaredPar Points 333733

VB.Net n'a pas cette fonctionnalité et il va pas venir dans Visual Studio 2010. La fonctionnalité qui jirwin est fait référence est appelé implicite de continuation de ligne. Il a à voir avec la suppression de l' _ à partir d'un multiple de la ligne de la déclaration ou de l'expression. Cela supprime la nécessité de mettre fin à une multiligne chaîne avec _ mais il n'y a pas encore de mult-ligne de chaîne littérale en VB.

Exemple de chaîne multi-ligne

Visual Studio 2008

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

Visual Studio 2010

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

44voto

Osiname Points 511

J'ai utilisé cette variante:

      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()
 

il permet <> dans la chaîne

16voto

Destructerator Points 88

C'était un article vraiment utile pour moi, mais personne n'a mentionné comment concaténer au cas où vous souhaitiez envoyer des variables, ce que vous devez faire 99% du temps.

... <% = variable %> ...

Voici comment vous le faites:

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

10voto

RichardJohnn Points 340

Eh bien, puisque vous semblez être sur votre python, je suggère que vous copiez votre texte en python, comme:

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

puis faire un:

  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")

ou

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

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

puis au moins vous pouvez le copier et le mettre dans votre code VB. Les points de Bonus si vous liez un raccourci clavier (plus rapide pour obtenir avec:Autohotkey) à faire ce pour pour tout ce qui est dans votre mémoire tampon de collage. La même idée fonctionne bien pour un formateur SQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X