Metoda podřetězců VB.NET s PŘÍKLADEM
⚡ Chytré shrnutí
Podřetězec VB.Net extracVrací část řetězce (String) zadáním počátečního indexu a volitelné délky. Metoda patří do třídy String, počítá znaky od nuly a vrací zcela nový řetězec bez změny originálu.
Co je to podřetězec?
Funkce Substring se používá k získání části zadaného řetězce. Tato metoda je definována ve třídě String třídy Microsoft VB.NetMusíte zadat počáteční index, od kterého bude řetězec exprimován.tracted. Řetězec bude extracz daného indexu až do vámi zadané délky.
Před extracPři zpracování textu je užitečné porozumět syntaxi, kterou metoda Substring očekává.
Syntaxe podřetězce
Funkce přijímá dva argumenty, jak je znázorněno v následující syntaxi:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Zde,
- Klíčové slovo ByVal označuje pass-by-value, což je mechanismus předávání argumentů funkcím.
- Počáteční_index je index, ze kterého bude podřetězec získán.
- sub_length označuje délku, do které bude řetězec kopírován z indexu start_Index. Tato délka se měří počtem znaků. Funkce vrátí extracpodřetězec ted.
Počáteční index je založen na nule, takže první znak řetězce se nachází na pozici 0, nikoli na pozici 1.
S definovanou syntaxí ukazují následující příklady metodu Substring v praxi v konzolové aplikaci.
Příklady
Krok 1) Vytvořte novou konzolovou aplikaci.
Krok 2) Přidejte k němu následující kód:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(0, 4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Krok 3) Klikněte na tlačítko Start na panelu nástrojů pro spuštění kódu. Měli byste získat následující výsledek:
Použili jsme následující kód:
Vysvětlení Code:
- Vytvoření modulu s názvem Module1.
- Spuštění hlavního dílčího postupu.
- Definování řetězcové proměnné s názvem st a přiřazení hodnoty Guru99 k tomu.
- Definování řetězcové proměnné s názvem 'subst' jako podřetězce řetězce 'st' z indexu 0 a délky 4 znaků.
- Tisk nějakého textu a výše uvedeného podřetězce na konzole.
- Pozastavení okna konzoly na chvíli a čekání na to, až uživatel provede akci k jeho zavření.
- Konec hlavního dílčího postupu.
- Konec modulu.
Jeden argument
Co když funkci předáme pouze jeden argument? Funkce zkopíruje všechna data v řetězci, který začíná tímto indexem. Co se stane, je, že funkce Substring interně zkopíruje všechna data řetězce v tomto indexu a také data, která následují po tomto indexu. Například:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Kliknutím na tlačítko Start spusťte kód. Mělo by vrátit následující:
Funkce Substring vrátila hodnotu 99. Funkci jsme předali parametr 4, což znamená, že začne extract podřetězec od znaku na indexu 4 do konce řetězce. 9 je znak na indexu 4 řetězce. Guru99, proto extractam to začalo.
Kromě ořezávání z jednoho indexu může metoda Substring cílit také na znaky uprostřed řetězce String.
Střední postavy
Je také možné, abychom získali střední znaky příslušného řetězce. V tomto případě musíme poskytnout pouze počáteční index a délku řetězce, kterou potřebujeme. V následujícím příkladu získáváme podřetězec zadaného řetězce z indexu 2 a řetězec bude mít délku 2 znaků:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(2, 2) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Kliknutím na tlačítko Start na panelu nástrojů spusťte kód. Získáte následující výsledek:
Ve výše uvedeném příkladu vrátila funkce Substring hodnotu ru. Funkci jsme předali parametry (2, 2). První 2 instruují funkci, aby začala s ex.tracpodřetězce z indexu 2, zatímco druhý index 2 instruuje funkci, aby vrátila podřetězec o délce pouze 2 znaky. To znamená, že extracČíslo podřetězce by mělo začínat od prvku umístěného na indexu 2 řetězce. Guru99, což je r. Protože vrácený podřetězec by měl mít délku pouze 2 znaky, extracFunkce nepřekročí hranici 'u', proto vrátila 'ru'.
Jeden Char
K získání jednoho znaku z řetězce můžeme použít funkci Substring. V takovém případě je nutné, abyste provedli alokaci, ale postava je přístupná přímo. Tohle je o něco rychlejší. Následující příklad ukazuje dva způsoby, jak toho můžeme dosáhnout:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim mid1 As Char = st(1) Console.WriteLine(mid1) Dim mid2 As String = st.Substring(1, 1) Console.WriteLine(mid2) Console.ReadKey() End Sub End Module
Kliknutím na tlačítko Start spusťte kód. Získáte následující výsledek:
Použili jsme následující kód:
Vysvětlení Code:
- Vytvoření modulu s názvem Module1.
- Spuštění hlavního dílčího postupu.
- Definování řetězcové proměnné s názvem st a přiřazení hodnoty Guru99 k tomu.
- Definování řetězcové proměnné s názvem mid1 a získání znaku na indexu 1 řetězce String st. Tento znak bude přiřazen k proměnné mid1.
- Tisk výše uvedeného znaku na konzole.
- Definování řetězcové proměnné s názvem mid2 a získání znaku na indexu 1 o délce 1 z String st. Délka 1 znamená, že vrátí stejný znak na počátečním indexu. Počítání začíná od počátečního indexu, který určíte. Tento znak bude přiřazen k proměnné mid2.
- Tisk výše uvedeného znaku na konzole.
- Pozastavení okna konzoly na chvíli a čekání na to, až uživatel provede akci k jeho zavření.
- Konec hlavního dílčího postupu.
- Konec modulu.
Jakmile se uklidníš, bývalý/bývalátracPři práci s podřetězci je vhodné vědět, jak zpracovat chyby, které může metoda vyvolat.
Časté chyby podřetězců a jak se jim vyhnout
Metoda Substring je striktní ohledně hodnot, které jí předáváte. Když argument překročí hranice řetězce (String), VB.Net vyvolá výjimku ArgumentOutOfRangeException a zastaví program za běhu. Pochopení pravidel vám pomůže vyhnout se této běžné chybě.
Metoda vyvolá výjimku ve třech situacích:
- Počáteční_index je záporné číslo.
- Počáteční index je větší než délka řetězce.
- Součet bodů start_Index a sub_length za koncem řetězce.
Častou chybou je použití výsledku funkce IndexOf bez jeho předchozí kontroly. Pokud IndexOf nenajde znak, vrátí -1 a předání -1 funkci Substring spustí výjimku. Následující kód se tomu chrání:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim pos As Integer = st.IndexOf("9") If pos >= 0 Then Dim subst As String = st.Substring(pos) Console.WriteLine(subst) Else Console.WriteLine("Character not found") End If Console.ReadKey() End Sub End Module
Ověření indexu před voláním zajišťuje hladký chod aplikace, a to i v případě, že vstupní řetězec neobsahuje očekávaný znak.
Získání podřetězce před nebo za znakem
Běžným úkolem je např.tracrozdělení textu, který se objeví před nebo za určitým znakem, například rozdělení e-mailové adresy u znaku @. VB.Net pro tento účel neposkytuje samostatnou funkci, ale můžete toho dosáhnout kombinací IndexOf s Substring.
Text před znakem: Zavolejte IndexOf pro nalezení znaku a poté tento index předejte jako délku Substringu:
Module Module1 Sub Main() Dim email As String = "guru99@example.com" Dim position As Integer = email.IndexOf("@") Dim namePart As String = email.Substring(0, position) Console.WriteLine(namePart) Console.ReadKey() End Sub End Module
Kód vypíše guru99, část řetězce, která se nachází před znakem @.
Text za znakem: přidejte 1 do indexu a nechte Substring běžet až do konce řetězce:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Vrátí se example.com. Pokud se znak objeví vícekrát, použijte LastIndexOf místo IndexOf, aby se začalo od posledního výskytu namísto prvního.
Funkce podřetězec vs. Left, Right a Mid
Visual Basic zdědil tři starší řetězcové funkce z dřívějších verzí: Left, Right a Mid. Ty se nacházejí v MicrosoftJmenný prostor .VisualBasic a může být vývojářům přecházejícím z klasického VB povědomější.
- Left(řetězec, n) vrací prvních n znaků řetězce.
- Vpravo(řetězec, n) vrací posledních n znaků řetězce.
- Střed(řetězec, začátek, délka) vrací část z počáteční pozice, podobně jako Substring.
Klíčový rozdíl je v tom, jak počítají pozice. Funkce Mid je založena na jedničce, takže první znak se nachází na pozici 1, zatímco metoda Substring je založena na nule a začíná počítat od 0. Substring je standardní přístup .NET a chová se stejně ve všech jazycích .NET, takže je doporučenou volbou pro nový kód. Funkce Left, Right a Mid si rezervujte pro údržbu starších projektů Visual Basic.






