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 13.06.2001

Diese Seite wurde zuletzt aktualisiert am 13.06.2001
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...

Anführungszeichen

Zurück...


Anzeige

(-hg) mailto:hg_quotes@aboutvb.de

Ein häufig verwendetes Zeichen ist das doppelte Anführungszeichen " (Ascii-Zeichencode 34). Die Verwendung im Code bereitet jedoch ein paar kleine Schwierigkeiten. Da String-Literale (Klartext-Strings) selbst bereits in Anführungszeichen eingeschlossen werden müssen, können Sie das Anführungszeichen innerhalb eines String-Literals nicht einfach so verwenden - Sie müssen es verdoppeln:

Text = "Hallo ""Welt""!"

Wenn Sie ein einzelnes Anführungszeichen einer Variablen zuweisen oder es als Parameter übergeben wollen, sieht das in dieser Schreibweise etwas verwirrend aus:

Anführungszeichen = """"

Sie können natürlich in solchen Fällen auch die Chr$-Funktion verwenden, um das Anführungszeichen anhand des Ascii-Codes zu erhalten:

Anführungszeichen = Chr$(34)

Diese Schreibweise ist jedoch recht umständlich. Erheblich einfacher und auch leichter lesbar ist eine Konstante im üblichen Stil der Visual Basic-Konstanten. Allerdings können Sie Konstanten nicht per Funktion erzeugen - folgende Konstanten-Deklaration würde vom Kompiler nicht akzeptiert:

Public Const vbQuote = Chr$(34)

Einwandfrei gelingt dies jedoch so - die oben gezeigte verwirrende Schreibweise benötigen Sie so nur ein einziges Mal, wenn Sie eine Anführungszeichen-Konstante wie folgt in einem Standard-Modul deklarieren:

Public Const vbQuote = """"

Da Anführungszeichen zumeist paarweise verwendet werden, ist es recht praktisch, das Hinzufügen oder Entfernen von Anführungszeichen-Paaren in Hilfsfunktionen zu packen.

Die Funktion AddQuotes fügt Anführungszeichen zu einem gegebenen String hinzu. Im optionalen Parameter AddQuotesMode können Sie festlegen, ob ein Anführungszeichen-Paar in jedem Fall hinzugefügt werden soll (aqForce, Voreinstellung), ob eine ungleiche Anzahl von Anführungszeichen am Anfang und am Ende des betreffenden Strings zu Paaren aufgefüllt werden soll (aqToPairs), oder ob sicher gestellt werden soll, dass der im String enthaltene Text von genau einem Anführungszeichen-Paar eingeschlossen sein soll.

Public Enum AddQuotesModeConstants
  aqForce
  aqToPairs
  aqEnsureSinglePair
End Enum

Public Function AddQuotes(Text As String, _
 Optional ByVal AddQuotesMode As AddQuotesModeConstants) _
 As String

  Dim nLeftQuotes As Long
  Dim nRightQuotes As Long
  Dim nQuotes As Long
  
  Select Case AddQuotesMode
    Case aqForce
      AddQuotes = vbQuote & Text & vbQuote
    Case aqToPairs
      nLeftQuotes = zGetLeftQuotes(Text)
      nRightQuotes = zGetRightQuotes(Text)
      If nLeftQuotes Or nRightQuotes Then
        nQuotes = nLeftQuotes - nRightQuotes
        Select Case Sgn(nQuotes)
          Case -1
            AddQuotes = String(Abs(nQuotes), 34) & Text
          Case 0
            AddQuotes = Text
          Case 1
            AddQuotes = Text & String(nQuotes, 34)
        End Select
      Else
        AddQuotes = vbQuote & Text & vbQuote
      End If
    Case aqEnsureSinglePair
      nLeftQuotes = zGetLeftQuotes(Text)
      nRightQuotes = zGetRightQuotes(Text)
      Select Case nLeftQuotes
        Case 0
          Select Case nRightQuotes
            Case 0
              AddQuotes = vbQuote & Text & vbQuote
            Case 1
              AddQuotes = vbQuote & Text
            Case Else
              AddQuotes = vbQuote & _
               Left$(Text, Len(Text) - nRightQuotes + 1)
          End Select
        Case 1
          Select Case nRightQuotes
            Case 0
              AddQuotes = Text & vbQuote
            Case 1
              AddQuotes = Text
            Case Else
              AddQuotes = _
               Left$(Text, Len(Text) - nRightQuotes + 1)
          End Select
        Case Else
          Select Case nRightQuotes
            Case 0
              AddQuotes = Mid$(Text, nLeftQuotes) & vbQuote
            Case 1
              AddQuotes = Mid$(Text, nLeftQuotes)
            Case Else
              AddQuotes = Mid$(Text, nLeftQuotes, Len(Text) _
               - nRightQuotes)
          End Select
      End Select
  End Select
End Function

Die Hilfs-Funktion StripQuotes bietet Ihnen ebenfalls mehrere Möglichkeiten. Hier geben Sie im optionalen Parameter StripQuotesMode an, ob alle einschließenden Anführungszeichen entfernt werden sollen, ob alle Paare entfernt werden sollen, oder ob genau ein Paar entfernt werden soll.

Public Enum StripQuotesModeConstants
  sqAll
  sqAllPairs
  sqSinglePair
End Enum

Public Function StripQuotes(Text As String, _
 Optional ByVal StripQuotesMode As StripQuotesModeConstants) _
 As String

  Dim nLeftQuotes As Long
  Dim nRightQuotes As Long
  Dim nQuotes As Long
  
  Select Case StripQuotesMode
    Case sqAll
      nLeftQuotes = zGetLeftQuotes(Text)
      nRightQuotes = zGetRightQuotes(Text)
      StripQuotes = Mid$(Text, nLeftQuotes + 1, Len(Text) _
       - nLeftQuotes - nRightQuotes)
    Case sqAllPairs
      nLeftQuotes = zGetLeftQuotes(Text)
      nRightQuotes = zGetRightQuotes(Text)
      Select Case nLeftQuotes
        Case Is >= nRightQuotes
          nQuotes = nRightQuotes
        Case Else
          nQuotes = nLeftQuotes
      End Select
      StripQuotes = _
       Mid$(Text, nQuotes + 1, Len(Text) - 2 * nQuotes)
    Case sqSinglePair
      If Left$(Text, 1) = vbQuote _
       And Right$(Text, 1) = vbQuote Then
        StripQuotes = Mid$(Text, 2, Len(Text) - 2)
      End If
  End Select
End Function

Beide Funktionen ermitteln in den meisten Fällen erst einmal die vorhandene Anzahl der links- und rechtsseitigen Anführungszeichen über die privaten Hilfs-Funktionen zGetLeftQuotes und zGetRightQuotes. Dies reduziert deutlich die Anzahl der anfallenden einzelnen String-Operationen, die relativ langsam wären.

Private Function zGetLeftQuotes(Text As String) As Long
  Dim nLeftQuotes As Long
  Dim nPos As Long
  Dim nStart As Long

  nStart = 1
  Do
    nPos = InStr(nStart, Text, vbQuote)
    If nPos = nStart Then
      nLeftQuotes = nLeftQuotes + 1
      nStart = nStart + 1
    Else
      zGetLeftQuotes = nLeftQuotes
      Exit Function
    End If
  Loop
End Function

Private Function zGetRightQuotes(Text As String) As Long
  Dim nRightQuotes As Long
  Dim nPos As Long
  Dim nStart As Long

  nStart = Len(Text)
  Do
    nPos = InStrRev(Text, vbQuote, nStart)
    If nPos = nStart Then
      nRightQuotes = nRightQuotes + 1
      nStart = nStart - 1
    Else
      zGetRightQuotes = nRightQuotes
      Exit Function
    End If
  Loop
End Function

Modul modQuotes (modQuotes.bas - ca. 4,7 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