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, 13)    ' Returns "Mid".
LastWord = Mid(MyString, 144)    ' 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 

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

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.ObjectByVal As System.EventArgs) Handles btnnagy.Click
        lbl_kiír.Text 
= UCase(txt1.Text)
    
End Sub

    Private Sub 
btn_hossz_Click(ByVal sender As System.ObjectByVal 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.ObjectByVal As System.EventArgs) Handles btn_kozott.Click
        lbl_kiír.Text 
= Mid(txt1.Text, 23)
    
End Sub

    Private Sub 
btn_csere_Click(ByVal sender As System.ObjectByVal 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.ObjectByVal 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.ObjectByVal 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.ObjectByVal 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 

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(2As 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 

StrComp függvény visszatérési értéke egy karakterlánc-összehasonlítási muvelet eredményeként -1vagy 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(3As 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(13)
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 
é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 
é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(75'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(10As 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(75)
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. 
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.