ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 30.10.2002

Diese Seite wurde zuletzt aktualisiert am 30.10.2002
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Escape-Formatierung

Zurück...


Anzeige

(-hg) mailto:hg_stringescapes@aboutvb.de

Sie kennen vielleicht die in vielen anderen Programmiersprachen (C, PHP, Perl u.a.) übliche so genannte "Escape"-Notation zur Formatierung eines Strings mit Zeilenumbrüchen, Tabulatoren oder Datum- und Zeitausgaben. Visual Basic kennt zwar diese Art der Formatierung nicht, doch ist sie leicht mit Hilfe der Replace-Funktion (ab Visual Basic 6 verfügbar) nachzubilden. Bei der Escape-Formatierung werden die Formatierungsangaben durch einen Backslash "\" innerhalb eines Strings markiert. Die nachfolgenden Zeichen werden daraufhin untersucht, ob sie eine Formatierungsanweisung enthalten. Wird eine solche vorgefunden, wird an Stelle der Anweisung die gewünschte Formatierung vorgenommen bzw. eingefügt. Die Formatierungsanweisungen beispielsweise für einen Zeilenumbruch lautet "\n" oder für einen Tabulatorschritt "\t". Der String

"Dies ist Zeile 1\nDies ist Zeile 2"

würde formatiert wie folgt erscheinen:

Dies ist Zeile 1
Dies ist Zeile 2

Normalerweise müsste der String mit dem Zeilenumbruch in Visual Basic durch eine Unterbrechung des Strings und eine Einfügung einer der Stringkonstanten für einen Zeilenumbruch (vbNewLine oder vbCrLf) notiert werden:

"Dies ist Zeile 1" & vbNewLine & "Dies ist Zeile 2"

Mit einem zusätzlichen Tabulatorschritt zur Einrückung der zweiten Zeile sähe der String so aus:

"Dies ist Zeile 1\n\tDies ist Zeile 2"

Die formatierte Ausgabe dazu:

Dies ist Zeile 1
    Dies ist Zeile 2

Und auch noch zur Verdeutlichung die "normale" Visual Basic-Notation mit der Stringkonstante vbTab:

"Dies ist Zeile 1" & vbNewLine & vbTab & "Dies ist Zeile 2"

Die Auswertung aller Formatierungsanweisungen in einem String ist mittels der erwähnten Replace-Funktion kein großes Problem - zunächst für die beiden oben gezeigten Anweisungen separat:

FormatierterText = Replace(Text, "\n", vbNewLine)

und

FormatierterText = Replace(Text, "\t", vbTab)

Sie können die Replace-Funktion nacheinander auf den gleichen String mehrfach anwenden, um verschiedene Formatanweisungen auszuführen. Sie können sie aber auch ineinander verschachteln:

FormatierterString = _
 Replace(Replace(Text, "\n", vbNewLine), "\t", vbTab))

Eine kleine Schwierigkeit muss jedoch noch berücksichtigt und gelöst werden. Schließlich kann in einem String ein Backslash auch auftreten, ohne dass er als Beginn einer Formatierungsanweisung betrachtet werden soll - etwa in einer Pfadangabe. Wenn ein Pfadbestandteil mit einem "n" oder einem "t" auf einen Backslash folgend beginnen sollte, wäre das Ergebnis nach der Anwendung der Replace-Funktion sicher nicht das gewünschte. Um diese Schwierigkeit zu umgehen, müssen "gewöhnliche" Backslashs in einem solchen String besonders gekennzeichnet werden. Der Einfachheit halber wird ein Backslash verdoppelt. Zu Beginn aller Formatierungen werden die Backslash-Doppel durch ein Zeichen ersetzt, das kaum im normalen Text vorkommen wird (etwa Chr$(0)), um schon einmal mögliche Schwierigkeiten mit ja auch möglichen Zeichenfolgen wie "\\n" oder "\\t" zu umgehen. Nach Ausführung aller Formatierungen wird dieser Ersatz der doppelten Backslashs in einem weiteren, abschließenden Replace-Schritt durch einfache Backslashs ersetzt:

FormatierterString = _
 Replace(Replace(Replace(Replace _
 (Text, "\\", Chr$(0)) _
 , "\n", vbNewLine) _
 , "\t", vbTab) _
 , Chr$(0), "\")

Es bleibt Ihrer Phantasie und Kreativität überlassen, welche besonderen Formatierungen Sie mittels dieses Verfahrens in Ihre Strings einbauen und umsetzen lassen möchten. So könnten Sie etwa auch Datum- und Zeitangaben separat ("\dd" für Datum, "\tt" für Zeit) oder kombiniert ("\dt" für Datum mit Zeit) einbauen, die automatisch durch das aktuelle Datum bzw. die aktuelle Uhrzeit in den Standard-Formatierungen des Systems ersetzt werden. Eine hierzu erweiterte Replace-Verkettung in eine Funktion namens StringEscape verpackt, könnte so aussehen:

Public Function StringEscapes(Text As String) As String
  StringEscapes = _
   Replace( _
   Replace( _
   Replace( _
   Replace( _
   Replace( _
   Replace( _
   Replace(Text, "\\", Chr$(0)) _
    , "\dd", Format$(Now, "Short Date")) _
    , "\tt", Format$(Now, "Long Time")) _
    , "\dt", Format$(Now, "general date")) _
    , "\t", vbTab), "\n", vbNewLine) _
    , Chr$(0), "\")
End Function

Der von dieser Funktion umgesetzte Text

"Datum:\n\t\dd\n\nZeit:\n\t\tt\n\nDatum und Zeit:\n\t\dt"

würde mit der Print-Anweisung auf einem Form wie folgt ausgegeben:

Ausgabe eines String mit Escape-Formatierung

Ausgabe eines String mit Escape-Formatierung

Die in anderen Programmiersprachen übliche "Escapierung" eines Doppelten Anführungszeichens " innerhalb eines Strings (der ja insgesamt durch Doppelte Anführungszeichen eingegrenzt werden muss) durch die Angabe von \" ist in Visual Basic nicht notwendig. Sie können statt dessen das Doppelte Anführungszeichen selbst verdoppelt angeben, und Visual Basic ersetzt es selbsttätig. Der String

"In ""Anführungszeichen"" stehendes Wort"

wird automatisch so ausgegeben:

In "Anführungszeichen" stehendes Wort

Beispiel-Projekt und Modul modStringEscapes (stringescapes.zip - ca. 2,8 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer