VB.NET Anführungszeichen in String
Inhaltsverzeichnis
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:
Hier wurde z. B. nach einem Template namens „Default“ gesucht, 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:
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:
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 Code–Frickeleien 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