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.

  • 🔢 Sıfır tabanlı indeks: Substring metodu karakterleri 0. indeksten itibaren sayar, bu nedenle bir dizenin ilk harfi sıfırıncı konumda yer alır.
  • ☑️ İki aşırı yükleme: Tek bir argüman geçirmek, o indeksten itibaren her şeyi döndürürken, iki argüman geçirmek sabit sayıda karakter döndürür.
  • ✂️ Extract konumuna göre: Substring işlevini IndexOf veya LastIndexOf ile birleştirerek belirli bir karakterden önceki veya sonraki metni yakalayabilirsiniz.
  • ⚠️ Güvenli indeksleme: Negatif veya aralık dışı bir indeks, ArgumentOutOfRangeException hatası verir; bu nedenle yöntemi çağırmadan önce değerleri doğrulayın.
  • 🔤 Değiştirilemez sonuç: Substring fonksiyonu, kaynak dizeyi değiştirmeden bırakarak yeni bir dize döndürür; bu da .NET dizelerinin değişmezliğine uygundur.
  • 🤖 Yapay zeka yardımı: GitHub Copilot ve IntelliCode Visual Studio 2026'da, yazarken doğru alt dize çağrılarını önerir ve aralık dışı dizinleri işaretler.

VB.Net Alt Dize

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:

VB.Net Alt Dize örneği çıktısı

Aşağıdaki kodu kullandık:

VB.Net Alt Dize kod örneği

Açıklaması Code:

  1. Modül1 adlı bir modül oluşturuluyor.
  2. Ana alt prosedür başlatılıyor.
  3. `st` adında bir dize değişkeni tanımlayıp ona değer atamak. Guru99'u ona ait.
  4. 'st' dizesinin 0. indeksinden başlayarak 4 karakter uzunluğunda bir alt dizesi olan 'subst' adlı bir dize değişkeni tanımlıyoruz.
  5. Konsolda bazı metinlerin ve yukarıdaki alt dizenin yazdırılması.
  6. Konsol penceresinin bir süre duraklatılarak kullanıcının kapatmak için harekete geçmesi beklenir.
  7. Ana alt prosedürün sonu.
  8. 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:

VB.Net'te tek argümanlı alt dize işlemi

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:

VB.Net Alt dize orta karakterleri

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:

VB.Net Substring tek karakter çıktısı

Aşağıdaki kodu kullandık:

VB.Net Alt dize tek karakter kodu

Açıklaması Code:

  1. Modül1 adlı bir modül oluşturuluyor.
  2. Ana alt prosedür başlatılıyor.
  3. `st` adında bir dize değişkeni tanımlayıp ona değer atamak. Guru99'u ona ait.
  4. 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.
  5. Yukarıdaki karakterin konsola yazdırılması.
  6. 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.
  7. Yukarıdaki karakterin konsola yazdırılması.
  8. Konsol penceresinin bir süre duraklatılarak kullanıcının kapatmak için harekete geçmesi beklenir.
  9. Ana alt prosedürün sonu.
  10. 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.

SSS

Evet. Substring metodu sıfır tabanlıdır, bu nedenle dizenin ilk karakteri 0. indekste, ikincisi 1. indekste ve bu şekilde devam eder. Başlangıç ​​konumunu hesaplarken sıfırdan saymak önemlidir.

Hayır. VB.Net'te dizeler değiştirilemezdir, bu nedenle Substring yöntemi orijinal dizeyi asla değiştirmez. Mevcut dizeyi içeren yepyeni bir dize döndürür.tracKaynak dize orijinal değerini korurken, değiştirilmiş karakterler kullanılır.

Alt dize extracBir dizenin, dizin ve uzunluk kullanılarak elde edilen kesintisiz bir bölümüne ulaşmak. Bölünmüş Bir dizeyi, virgül veya boşluk gibi bir ayırıcı karakterin bulunduğu her yerde daha küçük dizelerden oluşan bir diziye böler. Listeler için Split, dilimler için ise Substring kullanın.

0 uzunluğunda bir değer geçirilmesi boş bir Dize (“”) döndürür, Nothing değil. Başlangıç ​​dizini Dizenin sınırları içinde kaldığı sürece çağrı geçerlidir ve bir istisna oluşturmaz.

Substring yöntemi, belirttiğiniz dizenin bir bölümünü saklar ve geri kalanını atar. Remove yöntemi ise bunun tam tersini yapar: verilen bir dizinden başlayarak karakterleri siler ve geriye kalan dizeyi döndürür. Bunlar birbirini tamamlayıcı işlemlerdir.

Evet. Substring yöntemi başlangıç ​​dizinini ve uzunluğunu hesaplarken boşluklar, sekmeler ve noktalama işaretlerinin her biri bir karakter olarak sayılır. Sadece görünür harfler değil, boşluklar da dahil olmak üzere dizenin her konumu sayıma dahil edilir.

Evet. GitHub Yardımcı Pilotu Visual Studio 2026'da, örneğin "ex" gibi düz İngilizce bir yorum,tracVirgülün öncesindeki metni, IndexOf ile çalışan bir Substring çağrısına dönüştürün. Oluşturulan indekslerin aralık içinde kaldığını doğrulamak için her zaman kontrol edin.

Evet. Visual Studio 2026, GitHub Copilot'ı şu özelliklerle eşleştiriyor: IntellistudioCode Olası aralık dışı indeksleri işaretlemek, doğru argümanları önermek ve siz yazarken Substring çağrılarını tamamlamak için, helping Programı çalıştırmadan önce ArgumentOutOfRangeException hatasını önlüyorsunuz.

Bu yazıyı şu şekilde özetleyin: