Підрядковий метод VB.NET із ПРИКЛАДОМ
⚡ Розумний підсумок
Підрядок VB.Net extracts частину рядка, вказуючи початковий індекс та необов'язкову довжину. Метод належить до класу 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 позначає передачу за значенням, що є механізмом передачі аргументів функціям.
- Початковий_індекс – це індекс, з якого буде отримано підрядок.
- 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, тобто вона почне виконувати extract – підрядок від символу з індексом 4 до кінця рядка. 9 – це символ з індексом 4 рядка. Guru99, звідси й колишнійtracпочалося там.
Окрім обрізання з одного індексу, метод Substring також може обробляти символи в середині рядка.
Середні персонажі
Ми також можемо отримати середні символи рядка, про який йде мова. У цьому випадку нам потрібно лише надати початковий індекс і потрібну довжину рядка. У наступному прикладі ми отримуємо підрядок зазначеного рядка з індексу 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 символи. Це означає, що extracВизначення підрядка повинно починатися з елемента, розташованого за індексом 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) перевищує довжину рядка (String).
- Сума точок 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
Перевірка індексу перед викликом забезпечує безперебійну роботу вашої програми, навіть якщо вхідний рядок не містить очікуваного символу.
Отримання підрядка до або після символу
Поширеним завданням є колишнєtracрозділення тексту, що з'являється перед або після певного символу, наприклад, розділення адреси електронної пошти на знак @. 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 до індексу та дозвольте підрядку виконуватися до кінця рядка:
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.
- Ліворуч(рядок, n) повертає перші n символів рядка.
- Праворуч(рядок, n) повертає останні n символів рядка.
- Середина(рядок, початок, довжина) повертає частину з початкової позиції, подібно до підрядка.
Ключова відмінність полягає в тому, як вони підраховують позиції. Функція Mid базується на одиниці, тому перший символ знаходиться в позиції 1, тоді як метод Substring базується на нулі та починає підрахунок з 0. Substring – це стандартний підхід .NET, який поводиться однаково в кожній мові .NET, тому його рекомендується використовувати для нового коду. Зарезервуйте Left, Right та Mid для підтримки старих проектів Visual Basic.






