VB.NET Метод на подниз с ПРИМЕР
⚡ Умно обобщение
VB.Net подниз extracts част от String, като задава начален индекс и опционална дължина. Методът принадлежи към класа String, брои символите от нула и връща чисто нов String, без да променя оригинала.
Какво е подниз?
Функцията Substring се използва за получаване на част от зададен низ. Този метод е дефиниран в класа String на Microsoft VB.NetТрябва да укажете началния индекс, от който ще се извлича низът.tracТед. Низът ще бъде изключенtracот този индекс до указаната от вас дължина.
Преди бившияtracПри обработка на текст, е полезно да се разбере синтаксисът, който методът Substring очаква.
Синтаксис на подниз
Функцията приема два аргумента, както е показано в следния синтаксис:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Тук
- Ключовата дума ByVal обозначава преминаване по стойност, което е механизъм за предаване на аргументи към функции.
- Start_Index е индексът, от който ще бъде получен поднизът.
- sub_length обозначава дължината, до която низът ще бъде копиран от start_Index. Тази дължина се измерва по отношение на броя знаци. Функцията ще върне extracподниз, наречен „ted“.
Началният индекс е базиран на нула, така че първият символ на низа е на позиция 0, а не на позиция 1.
След дефинирания синтаксис, следващите примери показват метода Substring в действие в конзолно приложение.
Примери
Стъпка 1) Създайте ново конзолно приложение.
Стъпка 2) Добавете следния код към него:
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
Стъпка 3) Щракнете върху бутона Старт от лентата с инструменти, за да изпълните кода. Трябва да получите следния резултат:
Използвахме следния код:
Обяснение на Code:
- Създаване на модул с име Module1.
- Стартиране на основната подпроцедура.
- Дефиниране на низова променлива с име st и присвояване на стойността Guru99 към него.
- Дефиниране на низова променлива с име 'subst' като подниз на низа 'st' от индекс 0 и дължина от 4 символа.
- Отпечатване на текст и горния подниз на конзолата.
- Пауза на прозореца на конзолата за известно време в очакване потребителят да предприеме действие, за да го затвори.
- Край на основната подпроцедура.
- Край на модула.
Един аргумент
Ами ако предадем само един аргумент на функцията? Функцията ще копира всички данни в низа, който започва от този индекс. Това, което се случва, е, че функцията Substring вътрешно копира всички низови данни в този индекс, както и тези, които следват този индекс. Например:
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
Щракнете върху бутона Старт, за да стартирате кода. Трябва да върне следното:
Функцията Substring върна 99. Предадохме параметъра 4 на функцията, което означава, че тя ще започне да се изчислява.tract е поднизът от символа с индекс 4 до края на низа. 9 е символът с индекс 4 на низа Guru99, откъдето идва и бившиятtracцията започна там.
Освен изрязване от един индекс, методът Substring може да се насочи и към символи в средата на String.
Средни герои
Също така е възможно да получим средните знаци на въпросния низ. В този случай трябва да предоставим само началния индекс и дължината на низа, от който се нуждаем. В следващия пример получаваме подниз на посочения низ от индекс 2 и низът ще има дължина от 2 знака:
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
Щракнете върху бутона Старт от лентата с инструменти, за да стартирате кода. Ще получите следния резултат:
В горния пример, функцията Substring върна ru. Предадохме параметрите (2, 2) на функцията. Първите 2 инструктират функцията да започне extracция на подниз от индекс 2, докато вторият 2 инструктира функцията да върне подниз с дължина само от 2 символа. Това означава, че примерътtracИзвеждането на подниз трябва да започва от елемента, разположен на индекс 2 на низа. Guru99, което е r. Тъй като върнатият подниз трябва да има дължина само от 2 символа, extracцията няма да премине отвъд „u“, следователно е върнала „ru“.
Един знак
Можем да използваме функцията Substring, за да получим един знак от низ. В такъв случай е необходимо да направите разпределение, но символът може да бъде достъпен директно. Това е малко по-бързо. Следващият пример демонстрира два начина, чрез които можем да постигнем това:
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
Щракнете върху бутона Старт, за да стартирате кода. Ще получите следния резултат:
Използвахме следния код:
Обяснение на Code:
- Създаване на модул с име Module1.
- Стартиране на основната подпроцедура.
- Дефиниране на низова променлива с име st и присвояване на стойността Guru99 към него.
- Дефиниране на низова променлива с име mid1 и получаване на знака при индекс 1 на String st. Този знак ще бъде присвоен на променливата mid1.
- Отпечатване на горния символ на конзолата.
- Дефиниране на низова променлива с име mid2 и получаване на знака с индекс 1 с дължина 1 от String st. Дължината 1 означава, че ще върне същия знак в началния индекс. Броенето започва от началния индекс, който посочите. Този знак ще бъде присвоен на променливата mid2.
- Отпечатване на горния символ на конзолата.
- Пауза на прозореца на конзолата за известно време в очакване потребителят да предприеме действие, за да го затвори.
- Край на основната подпроцедура.
- Край на модула.
След като се почувствате комфортно с бившия си партньорtracПри работа с поднизове, е полезно да се знае как да се обработват грешките, които методът може да генерира.
Често срещани грешки в поднизовете и как да ги избегнем
Методът Substring е строг по отношение на стойностите, които му предавате. Когато даден аргумент излезе извън границите на String, VB.Net хвърля ArgumentOutOfRangeException и спира програмата по време на изпълнение. Разбирането на правилата ви помага да избегнете тази често срещана грешка.
Методът повдига изключението в три ситуации:
- Началният_индекс е отрицателно число.
- Start_Index е по-голям от дължината на низа.
- Сумата от точките start_Index и sub_length след края на низа.
Честа грешка е използването на резултата от функцията IndexOf без предварителна проверка. Когато IndexOf не намери символа, тя връща -1 и подаването на -1 към Substring задейства изключението. Следният код предпазва от това:
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
Валидирането на индекса преди извикването осигурява гладкото функциониране на приложението, дори когато входният низ не съдържа очаквания символ.
Получаване на подниз преди или след символ
Често срещана задача е extracтиране на текста, който се появява преди или след определен символ, например разделяне на имейл адрес при знака @. VB.Net не предоставя специална функция за това, но можете да комбинирате IndexOf с Substring, за да го постигнете.
Текст преди символ: извикайте IndexOf, за да намерите символа, след което предайте този индекс като дължина на Substring:
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
Кодът отпечатва guru99, частта от низа, която се намира преди знака @.
Текст след символ: добавете 1 към индекса и оставете Substring да се изпълнява до края на String:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Това връща example.com. Когато даден символ се появява повече от веднъж, използвайте LastIndexOf вместо IndexOf, за да започнете от последното срещане, вместо от първото.
Подниз срещу функции Left, Right и Mid
Visual Basic наследява три стари функции за низове от по-ранни версии: Left, Right и Mid. Те се намират в Microsoft.VisualBasic именното пространство може да изглежда по-познато на разработчиците, идващи от класическия VB.
- Left(низ, n) връща първите n символа от низ.
- Right(низ, n) връща последните n символа от низ.
- Mid(низ, начало, дължина) връща част от начална позиция, подобно на Substring.
Ключовата разлика е как броят позициите. Функцията Mid е базирана на едно, така че първият символ е на позиция 1, докато методът Substring е базиран на нула и започва да брои от 0. Substring е стандартният .NET подход и се държи по един и същи начин във всеки .NET език, така че е препоръчителният избор за нов код. Запазете Left, Right и Mid за поддръжка на по-стари Visual Basic проекти.






