Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen
This printed page brought to you by AlphaSierraPapa
Operationen mit Textvariablen, die Strings (engl. für Zeichenketten) enthalten, gibt es viele. Wenn man die Wichtigsten kennt, so kann man sich das Leben als ASP-Programmierer ganz erheblich erleichtern. Hat man zum Beispiel einen physikalischen Pfad zu einer Datei, wie C:\Inetpub\wwwroot\images\logo.jpg, so kann man den Pfad zum Verzeichnis, in dem die Datei liegt, durch String-Operationen mit den VBScript Funktion InstrRev und Left leicht herausfinden. Auch für die Validierung von HTML-Formularen leisten String-Funktionen hervorragende Dienste.
In VBScript kann ein String theoretisch bis zu 2 Millionen Zeichen lang sein.
Ein String wird in VBScript durch Anführungszeichen begrenzt:
strErgebnis = "Dies ist ein Text" Ergebnis: Dies ist ein Text
Um einen String zum Browser zu schreiben, benutzt man in ASP den Befehl Response.Write:
Response.Write "Dies ist ein Text<BR>in zwei Zeilen." Response.Write "Weiterer Text..." Ergebnis im Browser: Dies ist ein Text in zwei Zeilen.Weiterer Text...
Ein Response.Write allein bewirkt keine Zeilenschaltung, sondern schreibt einfach den Text als HTML-Code zum Browser. Will man nun HTML Tags zum Browser schicken, so fügt man diese einfach in den String ein:
Response.Write "Dies ist <B><I>formatierter Text</I></B>.<BR>" Ergebnis im Browser: Dies ist ein formatierter Text.
Will man in einem String ein Anführungzeichen benutzen, so muss man das Anführungszeichen im String verdoppeln, damit in der Textvariable ein Anführungzeichen gespeichert wird:
Response.Write "Dies sind sogenannte ""Anführungzeichen""!<BR>" strRed = "Eine <FONT COLOR=""Red"">rote Schrift</FONT>!" Response.Write strRed Ergebnis im Browser: Dies sind sogenannte "Anführungzeichen"! Eine rote Schrift!
Wenn ein Anführungzeichen an das Ende oder den Anfang einer Zeichenkette gestellt wird, so ergeben sich dadurch 3 Anführungzeichen nebeneinander:
strAnfZeich = "Anführungzeichen" strErgebnis = "Und schon wieder """ & strAnfZeich & """..." Ergebnis: Und schon wieder "Anführungzeichen"...
Der Verknüpfungsoperator (&) wird wie folgt benutzt:
strErgebnis = strA & strB strErgebnis = "Ein Text," & " und noch ein Text"
Um nun in einem String auf einfache Weise eine Zeilenschaltung oder eine Tabulatorschaltung einzufügen, benutzt man sogenannte String-Konstanten.
Um Beispielsweise einen String mit 2 Zeilenschaltungen zu erzeugen, kann man einen VBScript Befehl wie folgt benutzen:
strErgebnis = "Eine Zeile" & vbCrLf & "zweite Zeile" & _ vbCrLf & "letzte Zeile" Ergebnis: Eine Zeile zweite Zeile letzte Zeile
Anmerkung: Wie Sie sicherlich wissen, benutzt man den <BR> Tag in HTML um eine Zeilenschaltung im Browser zu erreichen. Wenn Sie einen String an den Browser schicken, der ein vbCrLf enthält, so bewirkt dies nur eine Zeilenschaltung im Sourcecode, aber nicht im dargestellten Text.
Um in einem String alle Leerzeichen am Anfang oder am Ende des Strings zu entfernen benutzt man die VBScript Funktionen Trim, LTrim und RTrim. Dies ist zum Beispiel nützlich um Ergebnisse aus HTML-Formularen zu formatieren, da ein User aus Versehen Leerzeichen vor oder nach einer Eingabe eingetippt haben könnte.
Wenn man einen String in einer Datenbank speichert, so wird man für gewöhnlich auch alle Leerzeichen rechts und links des eigentlichen Wertes entfernen.
Die Funktion Trim entfernt die Leerzeichen links und rechts des eigentlichen Wertes:
strText = " Ein Text " Response.Write "*" & Trim(strText) & "*" Ergebnis im Browser: *Ein Text*
Hingegen entfernen die Funktionen LTrim und RTrim nur die Leerzeichen links (LTrim) beziehungsweise rechts (RTrim) der eigentlichen Zeichenkette:
strText = " Ein Text " Response.Write "LTrim: *" & LTrim(strText) & "*<BR>" Response.Write "RTrim: *" & RTrim(strText) & "*" Ergebnis im Browser: LTrim: *Ein Text * RTrim: * Ein Text*
Wenn man wissen möchte, wie viele Zeichen in einem String vorhanden sind, so benutzt man die VBScript Funktion Len.
strText = "Eine lange Zeichenkette" Response.Write "Anzahl Zeichen in strText = " & Len(strText) Ergebnis im Browser: Anzahl Zeichen in strText = 23
Anmerkung: Ein vbCrLf zählt als zwei Zeichen, da es ja aus Chr(10) und Chr(13) besteht.
Wenn man nur einen Teil einer Zeichenkette benötigt, so benutzt man die Funktionen Left, Right und Mid, um den gewünschten Teil der Zeichenkette zu erhalten.
Die Funktion Left liefert den linken Teil einer Zeichenkette, ihr Syntax ist wie folgt:
Syntax: String = Left(String,Länge) Beispiel: strLinks = Left("Dies ist ein Text!", 6) Response.Write strLinks Ergebnis: Dies i
Im Unterschied zu Left gibt die Funktion Right den rechten Teil einer Zeichenkette zurück:
Syntax: String = Right(String,Länge) Beispiel: strRechts = Right("Dies ist ein Text!", 7) Response.Write strRechts Ergebnis: n Text!
Die Funktion Mid dient dazu, um eine Zeichenkette zu bekommen, die mit einer bestimmten Länge an einer definierten Stelle des Strings liegt.
Syntax: String = Mid(String,Start,Länge) oder String = Mid(String,Start) Beispiel: strText = "Ein Beispieltext" Response.Write Mid(strText, 5) & "<BR>" Response.Write Mid(strText, 5, 3) Ergebnis: Beispiel Bei
Die Funktion Mid liefert als eine Zeichenkette einer definierten Länge, die an der Startposition des Strings liegt. Wenn man keine Länge angibt, so wird der gesamte String ab der Startposition bis zum Ende von der Mid Funktion zurückgegeben.
Die Funktionen UCase und LCase stehen für engl. "Uppercase" und "Lowercase", also für Großschreibung und Kleinschreibung. UCase verwandelt einen String in lauter Großbuchstaben, während LCase lauter Kleinbuchstaben zurück liefert:
strText = "Ein Beispieltext" Response.Write UCase(strText) & "<BR>" Response.Write LCase(strText) Ergebnis: EIN BEISPIELTEXT ein beispieltext
Die Funktionen LCase und UCase werden unter anderem dafür benutzt, um einen String mit einem anderen vergleichen zu könen ohne auf Groß- oder Kleinschreibung Rücksicht zu nehmen. Dies kann einiges an Programmierarbeit sparen helfen, wie das folgende Beispiel zeigt:
Ursprünglicher Vergleich: If strRet = "Ja" Or strRet = "ja" Or strRet = "JA" Then Response.Write "Sie haben sich für ""JA"" entschieden!" ElseIf strRet = "Nein" Or strRet = "nein" Or strRet = "NEIN" Then Response.Write "Sie haben sich für ""NEIN"" entschieden!" Else Response.Write "Sie haben sich nicht entschieden!" End If Vergleich mit UCase modifiziert: If UCase(strRet) = "JA" Then Response.Write "Sie haben sich für ""JA"" entschieden!" ElseIf UCase(strRet) = "NEIN" Then Response.Write "Sie haben sich für ""NEIN"" entschieden!" Else Response.Write "Sie haben sich nicht entschieden!" End If
Die Funktionen InStr und InStrRev dienen dazu, um die Position einer Zeichenkette in einer anderen Zeichenkette ausfindig zu machen. Wenn man zum Beispiel wissen möchte, an welcher Position das erste mal das Wort "klein" im String "Ein kleines Beispiel" auftaucht, so benutzt man die Funktion InStr:
Syntax: Postition_ab_Startposition = InStr(Start, String1, String2) Postition = InStr(String1, String2) Beispiel: strText = "Ein kleines Beispiel" intPos = InStr(strText,"klein") Response.Write "Das Wort ""klein"" ist an Position " Response.Write intPos & " des Strings """ & strText & """." Ergebnis: Das Wort "klein" ist an Position 5 des Strings "Ein kleines Beispiel".
Wenn die Function InStr den gesuchten String nicht in der Zeichenkette findet, so ist ihr Ergebnis der Wert 0.
InStrRev gibt die Position des letzen Strings in einem anderen String zurück.
Syntax: Postition_ab_Startposition = InStrRev(String1, String2, Start) Postition = InStrRev(String1, String2) Beispiel: strText = "Ein kleines Beispiel" intPosRev = InStrRev(strText,"ein") Response.Write "Das Wort ""ein"" ist an Position " Response.Write intPosRev & " des Strings """ & strText & """." Ergebnis: Das Wort "ein" ist an Position 7 des Strings "Ein kleines Beispiel".
Zum Schluss dieses Artikels möchte ich auf das Beispiel zurück kommen, das ich am Anfang erwähnt habe.
Um den Pfad zum Verzeichnis, in dem die Datei C:\Inetpub\wwwroot\images\logo.jpg liegt, herauszufinden, kann man die Funktion InstrRev und Left benutzen:
strDateiPfad = "C:\Inetpub\wwwroot\images\logo.jpg" intPos = InStrRev(strDateiPfad,"\") strOrdner = Left(strDateiPfad, intPos) strDatei = Mid(strDateiPfad, intPos+1) Response.Write "Ordner = " & strOrdner & "<BR>" & vbCrLf Response.Write "Dateiname = " & strDatei & "<BR>" & vbCrLf Ergebnis: Ordner = C:\Inetpub\wwwroot\images\ Dateiname = logo.jpg
Dieser Artikel hat Ihnen hoffentlich einen Überblick über die grundsätzliche Arbeit mit Strings verschafft. Komplexere String-Operationen und Funktionen werden in weiteren Artikeln vorgestellt und mit Beispielen diskutiert.
This printed page brought to you by AlphaSierraPapa
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000503.zip
Einführung in Stringoperationen
http:/www.aspheute.com/artikel/20001003.htm
Erstellung eines Newstickers in ASP - Teil 2
http:/www.aspheute.com/artikel/20010209.htm
Sonderzeichen für Forms decodieren
http:/www.aspheute.com/artikel/20010404.htm
Strukturierter Aufbau in der ASP-Programmierung
http:/www.aspheute.com/artikel/20011112.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.