EXAMPLE ile VB.NET Substring Yöntemi
⚡ Akıllı Özet
VB.Net Alt Dize ÖrneğitracBir başlangıç dizini ve isteğe bağlı bir uzunluk belirterek bir dizenin bir bölümünü döndürür. Bu yöntem String sınıfına aittir, sıfırdan başlayarak karakterleri sayar ve orijinalini değiştirmeden yepyeni bir dize döndürür.
Alt Dizi nedir?
Substring fonksiyonu, belirtilen bir dizenin bir bölümünü elde etmek için kullanılır. Bu yöntem, String sınıfında tanımlanmıştır. Microsoft VB.NetDizinin hangi başlangıç indeksinden itibaren çıkarılacağını belirtmeniz gerekiyor.tracted. Dize çıkarılacak.tracBelirtilen indeksten başlayarak, belirttiğiniz uzunluğa kadar.
Eski sevgiliden öncetracMetni incelerken, Substring yönteminin beklediği sözdizimini anlamak faydalı olacaktır.
Alt Dizenin Sözdizimi
Fonksiyon, aşağıdaki sözdiziminde gösterildiği gibi iki bağımsız değişkeni kabul eder:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Burada,
- ByVal anahtar sözcüğü, argümanları işlevlere aktarmanın bir mekanizması olan değere göre geçişi belirtir.
- start_Index, alt dizenin alınacağı dizindir.
- `sub_length` parametresi, dizenin `start_Index`'ten itibaren kopyalanacağı uzunluğu belirtir. Bu uzunluk karakter sayısı cinsinden ölçülür. Fonksiyon, `ex` değerini döndürür.tracted alt dizesi.
Başlangıç indeksi sıfır tabanlıdır, bu nedenle dizenin ilk karakteri 1. pozisyonda değil, 0. pozisyonda yer alır.
Tanımlanan sözdizimiyle, aşağıdaki örnekler Substring yönteminin bir konsol uygulamasında nasıl çalıştığını göstermektedir.
Örnekler
Adım 1) Yeni bir konsol uygulaması oluşturun.
Adım 2) Aşağıdaki kodu ekleyin:
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. Adım) Kodu çalıştırmak için araç çubuğundaki Başlat düğmesine tıklayın. Aşağıdaki sonucu almalısınız:
Aşağıdaki kodu kullandık:
Açıklaması Code:
- Modül1 adlı bir modül oluşturuluyor.
- Ana alt prosedür başlatılıyor.
- `st` adında bir dize değişkeni tanımlayıp ona değer atamak. Guru99'u ona ait.
- 'st' dizesinin 0. indeksinden başlayarak 4 karakter uzunluğunda bir alt dizesi olan 'subst' adlı bir dize değişkeni tanımlıyoruz.
- Konsolda bazı metinlerin ve yukarıdaki alt dizenin yazdırılması.
- Konsol penceresinin bir süre duraklatılarak kullanıcının kapatmak için harekete geçmesi beklenir.
- Ana alt prosedürün sonu.
- Modül sonu.
Bir Argüman
Peki ya fonksiyona yalnızca bir argüman iletirsek? İşlev, String'deki bu dizinden başlayan tüm verileri kopyalayacaktır. Olan şu ki, Substring işlevi, o dizindeki ve bu dizini izleyen tüm dize verilerini dahili olarak kopyalar. Örneğin:
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
Kodu çalıştırmak için Başlat düğmesine tıklayın. Aşağıdakini döndürmelidir:
Substring fonksiyonu 99 değerini döndürdü. Fonksiyona 4 parametresini ilettik, bu da fonksiyonun işlem yapmaya başlayacağı anlamına geliyor.tracDizinin 4. indeksindeki karakterden dizinin sonuna kadar olan alt dizeyi tanımlayın. 9, dizinin 4. indeksindeki karakterdir. Guru99, dolayısıyla eskitraction orada başladı.
Substring yöntemi, tek bir indeksten kırpmanın yanı sıra, bir dizenin ortasındaki karakterleri de hedefleyebilir.
Orta Karakterler
Söz konusu String'in orta karakterlerini almamız da mümkündür. Bu durumda, sadece başlangıç dizinini ve ihtiyacımız olan String'in uzunluğunu sağlamamız gerekir. Aşağıdaki örnekte, belirtilen String'in 2 dizininden bir alt dizesini alıyoruz ve String'in uzunluğu 2 karakter olacak:
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
Kodu çalıştırmak için araç çubuğundan Başlat düğmesine tıklayın. Aşağıdaki sonucu alacaksınız:
Yukarıdaki örnekte, Substring fonksiyonu ru değerini döndürdü. Fonksiyona (2, 2) parametrelerini ilettik. İlk 2, fonksiyonun ex işlemine başlamasını sağlar.tracİlk parametre, fonksiyonun 2. indeksten itibaren alt dizeyi döndürmesini sağlarken, ikinci parametre ise yalnızca 2 karakter uzunluğunda bir alt dize döndürmesini emreder. Bu, ex parametresinintracAlt dizenin oluşturulması, dizenin 2. indeksinde bulunan öğeden başlamalıdır. Guru99, yani r. Döndürülen alt dizenin yalnızca 2 karakter uzunluğunda olması gerektiğinden, extraction 'u' harfinden öteye geçemeyeceği için 'ru' döndürdü.
Bir Karakter
Bir dizgeden tek bir karakter almak için Substring işlevini kullanabiliriz. Böyle bir durumda, bir tahsis yapmanız gerekir ancak karaktere doğrudan erişilebilir. Bu biraz daha hızlıdır. Aşağıdaki örnek, bunu başarabileceğimiz iki yolu göstermektedir:
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
Kodu çalıştırmak için Başlat düğmesine tıklayın. Aşağıdaki sonucu alacaksınız:
Aşağıdaki kodu kullandık:
Açıklaması Code:
- Modül1 adlı bir modül oluşturuluyor.
- Ana alt prosedür başlatılıyor.
- `st` adında bir dize değişkeni tanımlayıp ona değer atamak. Guru99'u ona ait.
- Mid1 adında bir string değişkeni tanımlamak ve String st'nin 1. indeksindeki karakteri almak. Bu karakter mid1 değişkenine atanacaktır.
- Yukarıdaki karakterin konsola yazdırılması.
- mid2 adında bir string değişkeni tanımlayıp String st'den indeks 1'deki 1 uzunluğundaki karakteri almak. 1'in uzunluğu, başlangıç dizininde aynı karakteri döndüreceği anlamına gelir. Sayma belirttiğiniz başlangıç indeksinden başlar. Bu karakter mid2 değişkenine atanacaktır.
- Yukarıdaki karakterin konsola yazdırılması.
- Konsol penceresinin bir süre duraklatılarak kullanıcının kapatmak için harekete geçmesi beklenir.
- Ana alt prosedürün sonu.
- Modül sonu.
Rahat hissettiğinizde...tracAlt dizeleri işlerken, yöntemin ortaya çıkarabileceği hataların nasıl ele alınacağını bilmekte fayda var.
Sık Görülen Alt Dizi Hataları ve Bunlardan Nasıl Kaçınılır
Substring metodu, kendisine ilettiğiniz değerler konusunda oldukça katıdır. Bir argüman String'in sınırlarının dışına çıktığında, VB.Net bir ArgumentOutOfRangeException hatası fırlatır ve programı çalışma zamanında durdurur. Kuralları anlamak, bu yaygın hatadan kaçınmanıza yardımcı olur.
Bu yöntem üç durumda istisna oluşturur:
- Başlangıç indeksi negatif bir sayıdır.
- Başlangıç indeksi, dizenin uzunluğundan daha büyüktür.
- Dizinin sonundan sonraki başlangıç indeksi ve alt uzunluk noktalarının toplamı.
Sık yapılan bir hata, IndexOf fonksiyonunun sonucunu önceden kontrol etmeden kullanmaktır. IndexOf karakteri bulamadığında -1 döndürür ve -1'i Substring'e geçirmek istisnaya neden olur. Aşağıdaki kod bunu önler:
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
Çağrıdan önce dizini doğrulamak, giriş dizesi beklediğiniz karakteri içermese bile uygulamanızın sorunsuz çalışmasını sağlar.
Bir karakterden önce veya sonra bir alt dize elde etme
Sık karşılaşılan bir görev şudur:tracBelirli bir karakterden önce veya sonra gelen metni bölmek, örneğin bir e-posta adresini @ işaretinden ayırmak gibi. VB.Net bunun için özel bir fonksiyon sağlamaz, ancak bunu başarmak için IndexOf'u Substring ile birleştirebilirsiniz.
Bir karakterden önce gelen metin: Karakteri bulmak için IndexOf fonksiyonunu çağırın, ardından bu indeksi Substring fonksiyonunun uzunluğu olarak iletin:
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
Bu kod, @ işaretinden önce gelen dizenin bir bölümü olan "guru99"u yazdırır.
Bir karakterden sonra gelen metin: İndekse 1 ekleyin ve Substring fonksiyonunun String'in sonuna kadar çalışmasına izin verin:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Bu, example.com adresini döndürür. Bir karakter birden fazla kez göründüğünde, ilkinden değil sonuncusundan başlamak için IndexOf yerine LastIndexOf kullanın.
Alt Dizi Fonksiyonu ile Sol, Sağ ve Orta Fonksiyonlar Arasındaki Fark
Visual Basic, önceki sürümlerden üç eski dize işlevini miras alır: Left, Right ve Mid. Bunlar şurada yer alır: Microsoft.VisualBasic ad alanı, klasik VB'den gelen geliştiricilere daha tanıdık gelebilir.
- Sol(dize, n) Bir dizenin ilk n karakterini döndürür.
- Sağ(dize, n) Bir dizenin son n karakterini döndürür.
- Orta (dize, başlangıç, uzunluk) Substring'e benzer şekilde, başlangıç konumundan bir bölüm döndürür.
Temel fark, pozisyonları nasıl saydıklarıdır. Mid fonksiyonu 1 tabanlıdır, bu nedenle ilk karakter 1. pozisyonda yer alır, Substring metodu ise sıfır tabanlıdır ve saymaya 0'dan başlar. Substring, standart .NET yaklaşımıdır ve her .NET dilinde aynı şekilde davranır, bu nedenle yeni kodlar için önerilen seçenektir. Left, Right ve Mid fonksiyonlarını eski Visual Basic projelerinin bakımı için saklayın.






