Karakterlánc-kezelő függvények
elméleti háttér
Több osztály is definiál String adattípust kezelő függvényeket, nevezetesen a Microsoft.VisualBasic.Strings és a System.String osztály.
Karakterlánc-kezelő függvények a Microsoft.VisualBasic.Strings osztályban
A szakaszban ismertetett karakterlánckezelő függvények definíciója a Microsoft.VisualBasic.Strings osztályban található.
Megjegyzés: A karakterlánc-kezelő függvények használatához az alábbi kódrészletet a forráskód elejére illesztve importálnia kell
a Microsoft.VisualBasic.Strings névteret a projektbe: Imports Microsoft.VisualBasic.Strings
A Len függvény
Egy szöveges változó hosszúságát lehet vele ellenőrizni. Használat:
Hossz = Len(változó)
Mid
Egy
karakterlánc típusú értéket ad eredményül, amely a karakterlánc megadott számú karakterét tartalmazza.
Szintaxis Mid(karakterlánc, kezdet [, hossz ] )
Az első példában a Mid függvény egy karakterlánc megadott számú karakterét adja eredményül.
Dim MyString, FirstWord, LastWord, MidWords
MyString = "Mid Function Demo" ' Create text string.
FirstWord = Mid(MyString, 1, 3) ' Returns "Mid".
LastWord = Mid(MyString, 14, 4) ' Returns "Demo".
MidWords = Mid(MyString, 5) ' Returns "Function Demo".
InStr
Az InStr függvény értéke egy adott karakterlánc másik karakterláncbeli első előfordulásának kezdő indexe.
Példa:
Az alábbi példa az InStr függvény segítségével visszaadja egy karakterlánc első előfordulásának kezdőpozícióját egy másik
karakterláncon belül:
Dim KeresendoString, KeresettChar As String
Dim SajatPos As Integer
KeresendoString ="XXpXXpXXPXXP" ' A karakterlánc, melyben a keresés történik.
KeresettChar = "P" ' A "P" karakter keresése.
' A 4. pozíción kezdődő szöveges összehasonlítás. A visszatérési érték 6.
SajatPos = InStr(4, KeresendoString, KeresettChar, CompareMethod.Text)
StrReverse
A StrReverse függvény által visszaadott karakterlánc egy megadott karakterlánc karaktereit tartalmazza fordított sorrendben.
Példa:
Dim sajatString As String = "ABCDEFG"
Dim forditottString As String
' Visszatérési érték: "GFEDCBA".
forditottString = StrReverse(sajatString)
UCase
Az UCase függvény az argumentumként kapott karakterlánc vagy karakter nagybetűssé konvertált változatát adja vissza.
A függvény csak a kisbetuket alakítja nagybetukké, a nagybetűs karakterek és a nem alfabetikus karakterek változatlanok
maradnak.
Példa:
Az alábbi példában az UCase függvény visszaadja egy karakterlánc nagybetűs változatát:
Dim Kisbetűs, Nagybetűs As String
Kisbetűs = "Helló, Világ 1234" ' Az átalakítandó karakterlánc.
Nagybetűs = UCase(Kisbetűs) ' Visszatérési érték: "HELLÓ, VILÁG 1234".
Chr és ChrW
A Chr és a ChrW függvények a megadott karakterkódhoz tartozó karakterrel térnek vissza.
Ha a karakterkód a -32768 – 65535 tartományon kívüli érték, a függvény ArgumentException kivételt generál.
Példa:
A példa a Chr függvényt használva állapítja meg a megadott karakterkódhoz rendelt karaktert.
Dim SajatChar As Char
SajatChar = Chr(65) ' Eredmény: "A".
SajatChar = Chr(97) ' Eredmény: "a".
SajatChar = Chr(62) ' Eredmény: ">".
SajatChar = Chr(37) ' Eredmény: "%".
Egy példa
Private Sub btnnagy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnagy.Click
lbl_kiír.Text = UCase(txt1.Text)
End Sub
Private Sub btn_hossz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_HOSSZ.Click
lbl_kiír.Text = Len(txt1.Text)
End Sub
Private Sub btn_kozott_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_kozott.Click
lbl_kiír.Text = Mid(txt1.Text, 2, 3)
End Sub
Private Sub btn_csere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_csere.Click
lbl_kiír.Text = txt1.Text.Replace("káposzta", "bimbó")
End Sub
Private Sub btn_összefuz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_összefuz.Click
lbl_kiír.Text = txt1.Text & txt2.Text
End Sub
Private Sub btn_pozició_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_pozició.Click
lbl_kiír.Text = txt1.Text.IndexOf("p")
End Sub
Private Sub btn_beszúr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_beszúr.Click
lbl_kiír.Text = txt1.Text.Insert(4, "t")
End Sub
GetChar
A GetChar függvény a megadott karakterlánc megadott pozícióján található karaktert reprezentáló Char értékkel tér vissza.
Ha az index 1-nél kevesebb, vagy nagyobb a megadott karakterlánc utolsó karakterének indexénél, a függvény
ArgumentException kivételt generál.
Példa:
A példa a GetChar függvény használatát szemlélteti egy karakterlánc adott pozícióján található karakter visszaadására.
Dim SajatString As String = "ABCDE"
Dim SajatChar As Char
SajatChar = GetChar(SajatString, 4) ' SajatChar = "D"
I
Join
A Join függvény egy karakterláncokat tartalmazó tömbben lévő karakterláncok konkatenáltjával tér vissza. Az összefűzendő
karakterláncokat tartalmazó egydimenziós tömböt a Join függvény argumentumaként kell megadni.
A függvény nem kötelezoen megadandó Delimiter argumentuma a visszaadott karakterláncban az egyes részkarakterláncokat
egymástól elválasztó karakterlánc. A Delimiter argumentum elhagyása esetén a függvény a szóköz karaktert („ ”) használja
a részkarakterláncok elhatárolójaként. Ha a Delimiter nulla hosszúságú karakterlánc (""), a függvény elválasztó karakterek nélkül
fűzi össze a részkarakterláncokat.
Példa:
Az alábbi példa a Join függvény használatát szemlélteti:
Dim sajatTetel(2) As String
Dim sajatBevasarloLista As String
sajatTetel(0) = "Körte"
sajatTetel(1) = "Barack"
sajatTetel(2) = "Szilva"
' Visszatérési érték: "Körte, Barack, Szilva"
sajatBevasarloLista = Join(sajatTetel, ", ")
LCase
Az LCase függvény az argumentumként kapott karakterlánc vagy karakter kisbetűssé konvertált változatát adja vissza.
A függvény csak a nagybetűket alakítja kisbetűkké,
a kisbetűs karakterek, illetve a nem alfabetikus karakterek változatlanok maradnak.
Példa:
A következo példában az LCase függvény visszaadja egy karakterlánc kisbetűs verzióját:
Dim Nagybetűs, Kisbetűs As String
Nagybetűs = "Helló, VILÁG 1234" ' Az átalakítandó karakterlánc.
Kisbetűs = LCase(Nagybetűs) ' Visszatérési érték: "helló, világ 1234".
LTrim, RTrim, és Trim
A három függvény mindegyike egy megadott karakterlánc másolatát adja vissza. Az LTrim függvény használata esetén
az eredmény nem tartalmaz bevezető szóközöket.
Az RTrim függvény esetén az eredmény nem tartalmaz záró szóközöket. A Trim függvény eredményéből mind a bevezető,
mind a záró szóközök hiányoznak.
Példa:
Az alábbi példában az LTrim függvény eltávolítja a bevezető, az RTrim a záró szóközöket, majd a Trim függvény
egy karakterláncérték bevezető és záró szóközeit is eltávolítja:
Dim SajatString, MaradekString As String
SajatString = " <-Maradék-> " ' A karakterlánc inicializálása.
MaradekString = LTrim(SajatString) ' MaradekString = "<-Maradék-> ".
MaradekString = RTrim(SajatString) ' MaradekString = " <-Maradék->".
MaradekString = LTrim(RTrim(SajatString)) ' MaradekString = "<-Maradék->".
' A Trim függvény önmagában való használata ugyanezt az eredményt adja.
MaradekString = Trim(SajatString) ' MaradekString = "<-Maradék->".
Replace
A Replace függvény által visszaadott karakterláncban egy karakterlánc adott karakterláncrészének megadott számú
előfordulása egy másik karakterláncrészre van cserélve.
A Replace függvény az eredeti karakterláncot a Start argumentumban megadott pozíciótól kezdődően dolgozza fel,
azaz az eredményül kapott karakterlánc az eredetinek e pozícióján kezdődik, s ehhez fűzi hozzá a Keresett
és Csere argumentumokkal meghatározott helyettesítések eredményeképp kapott karakterláncot.
Példa:
Az alábbi példa a Replace függvény használatát szemlélteti:
Dim sajatString As String = "Lista bevásárláshoz"
Dim egyString As String
' Visszatérési érték: "Lusta bevásárláshoz".
egyString = Replace(sajatString, "i", "u")
StrComp
A StrComp függvény visszatérési értéke egy karakterlánc-összehasonlítási muvelet eredményeként -1, 0 vagy 1.
A karakterláncokat a függvény alfanumerikus beturendbeli értékekként, az első karakterrel kezdődően hasonlítja össze.
Példa:
Az alábbi példában az StrComp függvény visszaadja egy karakterlánc-összehasonlítás eredményét.
A harmadik argumentum elhagyása esetén az összehasonlítás típusa az Option Compare direktívában vagy a projekt
alapértelmezései között megadott összehasonlítási mód lesz.
Dim SajatStr1, SajatStr2 As String
Dim SajatOsszehasonlitas As Integer
SajatStr1 = "ABCD"
SajatStr2 = "abcd" ' Változódeklarációk.
' A két karakterlánc beturend szerint azonos. Visszatérési érték: 0.
SajatOsszehasonlitas = StrComp(SajatStr1, SajatStr2, CompareMethod.Text)
' SajatStr1 a SajatStr2 után következik. Visszatérési érték: -1.
SajatOsszehasonlitas = StrComp(SajatStr1, SajatStr2, CompareMethod.Binary)
' SajatStr2 a SajatStr1 elé kerül. Visszatérési érték: 1.
SajatOsszehasonlitas = StrComp(SajatStr2, SajatStr2)
StrConv
Az StrConv függvény az argumentumainak megfeleloen formázott karakterlánccal tér vissza.
Az StrConv függvény karakterlánc-konverziót végez. A konverzió alapja a Conversion argumentumban megadott érték.
A Conversion argumentum értékének a VbStrConv felsőrolásos típus elemeibol kell kikerülnie.
A Conversion argumentum értékei az alábbiak lehetnek:
Felsőrolásos típusbeli érték Leírás
VbStrConv.None Nincs konverzió
VbStrConv.LinguisticCasing – A kisbetuk- és nagybetuk feldolgozása során nyelvi szabályok használata a fájlrendszerbeli
szabályok helyett (alapértelmezett) – Csak az UpperCase és LowerCase értékekkel együtt érvényes
VbStrConv.UpperCase A karakterlánc konvertálása nagybetűs karakterekké
VbStrConv.LowerCase A karakterlánc konvertálása kisbetűs karakterekké
VbStrConv.ProperCase A karakterláncban található minden szó első betujének nagybetűssé konvertálása
Példa:
Az alábbi példa kisbetűssé konvertál egy szöveget:
Dim sSzoveg, sUjSzoveg As String
sSzoveg = "Helló, Világ"
sUjSzoveg = StrConv(sSzoveg, VbStrConv.LowerCase)
Debug.WriteLine (sUjSzoveg) ' Kimenet: "helló, világ".
StrDup
Az StrDup függvény eredménye egy olyan karakterlánc vagy objektum, melyben a megadott karakter a megadott számú
alkalommal meg van ismételve. Az StrDup függvény két argumentuma a Number és a Character argumentum.
A Number argumentum adja meg a visszaadandó karakterlánc hosszát. Az StrDup függvény a Character argumentumból
csak az első karaktert használja. A Character argumentum értéke Char, String és Object típusú lehet.
Példa:
Az alábbi példa az StrDup függvénnyel állít elo egy ismétlodo karakterekbol álló karakterláncot:
Dim egyString As String = "Hej! Micsoda karakterlánc ez!"
Dim egyObject As New Object()
Dim sajatString As String
egyObject = "Ez egy Object típusú változóban tárolt karakterlánc"
sajatString = StrDup(5, "P") ' Visszatérési érték: "PPPPP"
sajatString = StrDup(10, egyString) ' Visszatérési érték: "HHHHHHHHHH"
sajatString = StrDup(6, egyObject) ' Visszatérési érték: "EEEEEE"
Compare
A Compare függvény az argumentumként kapott két karakterlánc összehasonlítását végzi el. Az összehasonlítás alapját
a szavak rendezési szabályai képezik. Az összehasonlítás véget ér, ha különbözoséghez ér, vagy mindkét karakterláncot
összehasonlította.
Compare példa:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "szövegpélda"
s2 = "szövegpé"
MsgBox(Compare(s2, s1)) 'Eredmény: -1.
MsgBox(Compare(s1, s2)) 'Eredmény: 1.
Concat
A Concat függvény egy vagy több karakterlánc konkatenáltjával tér vissza.
Concat példa:
Az alábbi példa a Concat metódus túlterhelt változatainak használatát szemlélteti:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2, sa(3) As String
sa(0) = "A"
sa(1) = "B"
sa(2) = "C"
s1 = "teszt"
s2 = "példa"
s1 = Concat(s1, s2) 'Eredmény: tesztpélda.
MsgBox(s1)
MsgBox(Concat(sa)) 'Eredmény: ABC.
Copy
A Copy függvény a megadott karakterláncértéket egy másik karakterláncba másolja.
Copy példa:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "Helló, világ"
'Az s1 karakterlánc másolása s2-be.
s2 = Copy(s1)
MsgBox(s2) 'A "Helló, világ" karakterlánc megjelenítése.
Remove
A Remove függvény megadott számú karaktert töröl egy megadott karakterláncból, egy szintén megadott pozíciótól kezdődően.
A Remove függvény két paraméterrel rendelkezik, a StartIndex és a Count paraméterrel.
A Startindex paraméter a karakterek törlésének kezdőpozíciója a karakterláncon belül.
A Count paraméter adja meg a törlendo karakterek számát.
Remove példa:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "Helló, világ"
'3 karakter törlése az "e" karaktertol kezdődően.
s2 = s1.Remove(1, 3)
MsgBox(s2) 'A "Hó, világ" karakterlánc megjelenítése.
Asc és AscW
Az Asc és az AscW függvények a megadott karakterhez tartozó karakterkódot reprezentáló egész számot adják vissza.
A függvények argumentuma bármilyen érvényes Char vagy String típusú kifejezés lehet.
Ha az argumentum karakterlánc, a függvény annak csak első karakterét veszi figyelembe.
Ha az argumentum üres karakterlánc, a függvény ArgumentException kivételt generál.
Az Asc függvény a bemeneti karakter kódpontját vagy karakterkódját adja vissza.
Egybájtos karakterkészletbol (SBCS) származó karakterek esetén a visszatérési érték 0 és 255 közötti szám.
Kétbájtos karakterkészletbol (DBCS) származó karakterek esetén a visszatérési érték -32768 és 32767 közötti szám.
Az AscW függvény a bemeneti karakter Unicode kódpontját adja vissza, mely 0 és 65535 közötti érték.
Példa:
Dim SajatInt As Integer
SajatInt = Asc("A") ' SajatInt értéke 65 lesz.
SajatInt = Asc("a") ' SajatInt értéke 97 lesz.
SajatInt = Asc("Apple") ' SajatInt értéke 65 lesz.
Substring
A Substring függvény egy adott karakterlánc adott pozíción kezdődő részkarakterláncát adja vissza.
Substring példa:
Az alábbi példa előállítja egy karakterlánc adott karakterpozícióján kezdődő és adott hosszúságú részkarakterláncát:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "Helló, világ"
s2 = s1.Substring(7, 5) 'Visszatérési érték: világ.
MsgBox(s2) 'A "világ" karakterlánc megjelenítése.
ToCharArray
A ToCharArray függvény egy karakterlánc karaktereit egy Unicode karaktertömbbe másolja.
ToCharArray példa:
Az alábbi példa egy karakterlánc adott karakterpozíciókon található karaktereit egy karaktertömbbe másolja:
' ' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1 As String
Dim ch(10) As Char
s1 = "Helló, világ"
'A v és g karakterek, valamint a köztük elhelyezkedő karakterek másolása a karaktertömbbe.
ch = s1.ToCharArray(7, 5)
MsgBox(ch(3)) 'Megjelenő érték: l.
ToLower
A ToLower függvény az argumentumként kapott karakterlánc kisbetűs változatával tér vissza.
ToLower példa:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "Helló, világ"
s2 = s1.ToLower() 'Az összes nagybetűs karakter kisbetűssé konvertálása.
MsgBox(s2) 'Megjeleno karakterlánc: helló, világ.
ToUpper
A ToUpper függvény az argumentumként kapott karakterlánc nagybetűs változatával tér vissza.
ToUpper példa:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = "Helló, világ"
s2 = s1.ToUpper() 'Az összes kisbetűs karakter nagybetűssé konvertálása.
MsgBox(s2) 'Megjeleno karakterlánc: HELLÓ, VILÁG.
Trim, TrimStart, és TrimEnd
A három függvény mindegyike egy megadott karakterlánc másolatát adja vissza.
A Trim függvény esetén az eredmény nem tartalmaz bevezető és záró szóközöket.
A TrimStart függvény használata esetén az eredmény nem tartalmaz bevezető szóközöket.
A TrimEnd függvény eredménye nem tartalmaz záró szóközöket.
Példa:
Az alábbi példa a TrimStart függvénnyel eltávolítja egy String típusú változó értékének bevezető szóközeit,
a TrimEnd függvénnyel a záró szóközeit, végül a Trim függvénnyel mind a bevezető, mind a záró szóközöket eltávolítja:
' A kód csak abban az esetben fordítódik le, ha azt egy eljárástörzsön (Sub) vagy függvénytörzsön (Function) belül helyezi el.
Dim s1, s2 As String
s1 = " Helló, világ "
s2 = s1.Trim() 'Eredménye a bevezető és záró szóközöktol mentes "Helló, világ" szöveg.
s2 = s1.TrimStart 'Bevezető szóközök eltávolítása.
s2 = s1.TrimEnd 'Záró szóközök eltávolítása.
Néhány pélad
Feladat:
Ellenőrzés és javítás: Nevet kell
ellenőrizni, hogy elfogadható-e, ha elfogadható, akkor vissza kell adni. Ha nem
de javítható, akkor adjuk vissza feljavított formában. Mit értek feljavításon?
Annyit, hogy a név minden szava nagybetűvel kezdődjön, de csak a kezdőbetű
legyen nagy! Ellenőrizni pedig annyit kell, hogy minimum kettő, vagy maximum 4
szóból áll-e a név, és ezen szavak mérete egyenként eléri-e a 4 karaktert
Egy módosító függvény létrehozása a
feladat. Röviden az ifjú korból ismert, "Tuvudsz teve ígvígy beveszévélnivi?"
stílusba konvertáló függvényre van szükség. A dolog elméleti alapja annyi, hogy
a magánhangzókat kell megkeresni, és azok mögé mindenhova beszúrni egy v betűt,
valamint a magánhangzót magát.