VB.NET Anführungszeichen in String

VB.NET Anführungszeichen in String
VB.NET Anführungszeichen in String

VB.NET Anführungszeichen in String

Du möchtest in VB.NET Anführungszeichen in einem String darstellen, bzw. haben?

Das ist kein Problem, lerne in diesem einfachen kleinen Beitrag, wie Du Anführungszeichen innerhalb eines Visual Basic .NET Strings darstellen kannst.

Vielleicht interessierst Du Dich auch noch für folgende Beiträge: Erstes Zeichen aus String entfernen, letztes Zeichen aus String entfernen oder String zerlegen.

Beispiel-Dialog

Vielleicht kommt Dir ein ähnlicher Dialog (MessageBox) wie Dieser hier bekannt vor:

VB.NET Anführungszeichen in String Beispiel-Dialog
VB.NET Anführungszeichen in String Beispiel-Dialog

Hier wurde z. B. nach einem Template namens „Defaultgesucht, Welches dann aber nicht gefunden wurde.

Wenn man statt des obigen Textes beispielsweise so etwas demonstriert bekommen würde, würde man sich sicher wundern:

VB.NET Beispiel-Dialog ohne Anführungszeichen
VB.NET Beispiel-Dialog ohne Anführungszeichen

Das dürfte dann daran liegen, dass man meint, das „Default“ Wort würde zum Satz selbst gehören und es sieht – nicht vorgehoben – irgendwie komisch aus.

Erster Versuch – VB.NET Anführungszeichen in String

Sobald Du also in eine ähnliche Situation gerätst – und ich denke an diesem Punkt bist Du gerade, da Du meinen Beitrag gefunden hast – könntest Du es wie folgt probiert haben:

VB.NET Anführungszeichen in String Fehler
VB.NET Anführungszeichen in String Fehler

Allerdings würdest Du auf diese Weise einen „end of-Anweisung erwartet“-Fehler bekommen.

Lass Dich hier durch das verwendete Dollar-Zeichen am Anfang des Strings und den geschweiften Klammern nicht verunsichern.

Diese „Technik“ nennt sich Zeichenfolgeninterpolation und ist seit Visual Basic .NET 14 verfügbar.

Seitdem nutze ich Diese ausgiebig und sehr gerne, da die Interpolation viel vereinfacht und verkürzt.

Code-Frickeleien aus dem Netz

Wie so oft beim Coding, findet man im Netz viele CodeFrickeleien wie z. B. Diese hier:

Dim exampleMessage = $"Could not find template {Chr(34)}{templateName}{Chr(34)} inside the folder"

You shall not parse, bzw. leider doch..

Man versucht hier durch die „Chr“-Funktion, das dem Char-Code jeweilig zugrunde liegende Zeichen zu bekommen, was bei der Zahl 34 das Anführungszeichen wäre.

Genau da finde ich fängt die Misere schon an, denn wer weiß nach einem vergangenen halben Jahr bitte noch, was die Zahl 34 repräsentieren sollte.

Auch wenn man jetzt die Zahl 34 durch eine passende Konstante ersetzen würde, wäre es suboptimal.

Public Const QUOTATION_MARK_CHAR_CODE = 34

Die bessere Variante

Ich persönlich bevorzuge normalerweise sprachunabhängige Hilfsmittel, daher würde ich definitiv auf die „Chr“-Funktion verzichten und einen anderen Weg suchen.

Die „Chr“-Funktion befindet sich im Microsoft.VisualBasic-Namespace und benötigt einen Verweis auf die Microsoft.VisualBasic.Core.dll

In diesem konkreten Fall benutzen wir für die finale Lösung einfach einen Escape-Character für die Anführungszeichen im String.

Ein Escape-Character

Bei einem Anführungszeichen in einem String benötigen wir dafür einfach ein weiteres Mal ein Anführungszeichen.

Das mag zwar verwirrend klingen, aber schau Dir diese Code-Zeile hier einfach mal an:

Dim message = ""This" stands between quotation marks"

In dieser Code-Zeile steht das Wort „This“ (wie auch hier) zwischen Anführungszeichen.

Kompletter Code – VB.NET Anführungszeichen in String

Public Class Form1

    Private Sub btnShowQuotationMarkInString_Click(sender As Object, e As EventArgs) Handles btnShowQuotationMarkInString.Click
        Dim templateName = tbTemplateName.Text.Trim()
        If String.IsNullOrEmpty(templateName) Then
            MessageBox.Show("Please enter a template name", "Template search", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

        Dim exampleMessage = $"Could not find template ""{templateName}"" inside the folder"

        ' or without string interpolation
        ' Dim exampleMessage = $"Could not find template """ & templateName & """ inside the folder"

        ' DONT
        ' Dim exampleMessage = $"Could not find template {Chr(34)}{templateName}{Chr(34)} inside the folder"

        MessageBox.Show(exampleMessage, "Template not found", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub

End Class

Downloads

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert