String

Konkatenasi, interpolasi dengan awalan $, dan metode string yang sering digunakan.

Daftar isi

String menyimpan deretan karakter dan muncul di hampir setiap program, mulai dari pesan keluaran sampai data yang dibaca dari masukan pengguna. Topik ini membahas tiga cara mengolah string, yaitu penyambungan dengan operator &, penyisipan nilai ke dalam teks dengan interpolasi berawalan $, dan metode bawaan yang paling sering digunakan. Sifat dasar string yang tidak dapat diubah isinya juga dijelaskan karena memengaruhi cara membaca setiap contoh.

String yang tidak dapat diubah#

Tipe String adalah tipe referensi yang bersifat immutable, artinya isinya tidak pernah berubah setelah objeknya dibuat. Setiap metode yang tampak mengubah string sebenarnya mengembalikan string baru, sedangkan string aslinya tetap utuh. Konsekuensinya, hasil metode harus ditampung kembali ke variabel apabila perubahan itu ingin digunakan.

vb Contoh: metode string mengembalikan string baru
Module ContohImmutable

    Sub Main()
        Dim kata As String = "vb"
        kata.ToUpper()

        Console.WriteLine(kata)
        kata = kata.ToUpper()
        Console.WriteLine(kata)
    End Sub

End Module
text Keluaran
vb
VB

Pemanggilan kata.ToUpper() pada baris pertama hanya menghasilkan string baru berisi VB yang langsung dibuang, sehingga kata tetap berisi vb. Baris kata = kata.ToUpper() menampung hasilnya kembali, dan baris itulah yang benar-benar mengganti isi variabel.

Sifat ini sekaligus membuat string aman dibagikan ke bagian mana pun program, karena penerima tidak mungkin mengubah isinya tanpa disadari pemiliknya. Biaya yang muncul adalah pembuatan objek baru setiap kali teks disusun ulang, hal yang baru terasa pada pemrosesan teks dalam jumlah besar.

Konkatenasi dengan &#

Operator & menyambung dua nilai menjadi satu string, dan operand angka dikonversi menjadi teks secara otomatis oleh operator ini. Dengan begitu, satu ekspresi & dapat menggabungkan teks tetap, variabel string, dan angka tanpa pemanggilan fungsi konversi terpisah.

vb Contoh: konkatenasi dengan &
Module ContohGabung

    Sub Main()
        Dim nama As String = "Citra"
        Dim usia As Integer = 24

        Console.WriteLine("Nama: " & nama)
        Console.WriteLine("Usia: " & usia)
        Console.WriteLine(nama & " berusia " & usia & " tahun")
    End Sub

End Module
text Keluaran
Nama: Citra
Usia: 24
Citra berusia 24 tahun

Operator & dipilih alih-alih + karena + juga berperan sebagai penjumlahan, sehingga maknanya menjadi ambigu ketika operandnya campuran teks dan angka. Ketika Option Strict On aktif, keraguan itu ditolak compiler dengan pesan konversi.

vb
' tidak-dijalankan
Console.WriteLine("Usia: " + 25) ' error BC30512: + antara String dan Integer ditolak

Pesan errornya berbunyi Option Strict On disallows implicit conversions from 'String' to 'Double', karena compiler berupaya membaca + sebagai penjumlahan dan menolak konversi teks menjadi angka. Penggunaan & untuk seluruh penyambungan teks menghilangkan keraguan semacam ini sejak awal.

Interpolasi dengan awalan $#

Interpolasi menyisipkan nilai ekspresi ke dalam teks tanpa menyambung potongan-potongan kecil. String yang mendukungnya ditulis dengan awalan $ sebelum tanda kutip, dan ekspresi apa pun diletakkan di dalam tanda kurung kurawal. Compiler mengganti setiap kurung kurawal dengan hasil ekspresinya saat string disusun.

vb Contoh: interpolasi string
Module ContohInterpolasi

    Sub Main()
        Dim nama As String = "Dewi"
        Dim nilai As Double = 87.25

        Console.WriteLine($"Siswa: {nama}")
        Console.WriteLine($"Nilai: {nilai}")
        Console.WriteLine($"Nilai dibulatkan: {CInt(nilai)}")
        Console.WriteLine($"Status: {nilai >= 75}")
    End Sub

End Module
text Keluaran
Siswa: Dewi
Nilai: 87.25
Nilai dibulatkan: 87
Status: True

Isi kurung kurawal tidak terbatas pada nama variabel. Pemanggilan metode seperti {CInt(nilai)} dan ekspresi perbandingan seperti {nilai >= 75} sama-sama sah, sehingga interpolasi menggantikan sebagian besar kebutuhan konkatenasi pada program sehari-hari. Awalan $ ditempel tepat sebelum tanda kutip pembuka, dan hasilnya tetap bertipe String biasa yang dapat disimpan ke variabel. Apabila tanda kurung kurawal itu sendiri perlu tampil di dalam teks, tanda tersebut ditulis ganda sebagai {{ dan }}.

Metode string yang sering digunakan#

Metode string bawaan mencakup kebutuhan yang paling sering muncul, yaitu mengukur panjang, mengubah bentuk huruf, mengambil potongan, dan mengganti teks. Program berikut mempraktikkan metode-metode tersebut pada satu teks yang berisi spasi berlebih di kedua ujungnya.

vb Program.vb
Module Program

    Sub Main()
        Dim nama As String = "  Budi Santoso  "
        Dim namaRapi As String = nama.Trim()

        Console.WriteLine(namaRapi)
        Console.WriteLine($"Panjang nama: {namaRapi.Length}")
        Console.WriteLine(namaRapi.ToUpper())
        Console.WriteLine(namaRapi.ToLower())
        Console.WriteLine(namaRapi.Substring(5))
        Console.WriteLine(namaRapi.Replace("Santoso", "S.Pd."))
        Console.WriteLine(namaRapi.StartsWith("Budi"))
    End Sub

End Module
text Keluaran
Budi Santoso
Panjang nama: 12
BUDI SANTOSO
budi santoso
Santoso
Budi S.Pd.
True

Tabel berikut merangkum metode yang digunakan beserta perannya. Properti Length tidak memerlukan tanda kurung karena bukan metode, sedangkan metode lainnya dipanggil dengan tanda kurung dan argumennya.

AnggotaPeranHasil pada namaRapi
LengthMenyatakan jumlah karakter12
ToUpper()Mengubah ke huruf kapitalBUDI SANTOSO
ToLower()Mengubah ke huruf kecilbudi santoso
Substring(5)Mengambil karakter mulai indeks ke-5Santoso
Trim()Menghapus spasi di kedua ujungBudi Santoso
Replace(old, new)Mengganti seluruh kemunculan teksBudi S.Pd.
StartsWith(teks)Memeriksa awalan, menghasilkan BooleanTrue

Indeks pada Substring dimulai dari nol, sehingga indeks ke-5 menunjuk huruf S pada Budi Santoso. Metode Split melengkapi daftar ini dengan memecah satu string menjadi array berdasarkan pemisah tertentu.

vb Contoh: memecah string dengan Split
Module ContohSplit

    Sub Main()
        Dim baris As String = "Budi,35,Bandung"
        Dim bagian() As String = baris.Split(","c)

        Console.WriteLine(bagian(0))
        Console.WriteLine(bagian(1))
        Console.WriteLine(bagian(2))
        Console.WriteLine($"Jumlah bagian: {bagian.Length}")
    End Sub

End Module
text Keluaran
Budi
35
Bandung
Jumlah bagian: 3

Membandingkan string#

Operator = membandingkan isi dua string dan menghasilkan Boolean, sehingga dua variabel string dapat dibandingkan tanpa memanggil metode khusus. Perbandingannya membedakan huruf besar-kecil karena VB.NET secara default menggunakan perbandingan biner, dan metode String.Equals dengan StringComparison menyediakan kontrol lebih rinci apabila perbedaan huruf perlu diabaikan.

vb Contoh: perbandingan string
Module ContohBanding

    Sub Main()
        Console.WriteLine("budi" = "Budi")
        Console.WriteLine(String.Equals("budi", "Budi", StringComparison.OrdinalIgnoreCase))
    End Sub

End Module
text Keluaran
False
True

Baris pertama menghasilkan False karena huruf b dan B dianggap berbeda, sedangkan baris kedua menghasilkan True karena perbandingannya mengabaikan perbedaan huruf. Operator <, >, <=, dan >= juga berlaku pada string dan mengurutkan teks menurut urutan karakternya. Memilih mode perbandingan yang sesuai penting ketika membandingkan masukan pengguna, misalnya jawaban ujian yang hurufnya tidak terkendali.

Kesalahan umum#

Tiga kesalahan berikut paling sering ditemui saat mengolah string.

  1. Mengharapkan metode mengubah string asli. nama.ToUpper() tanpa penugasan hasilnya tidak mengubah nama, sehingga hasil metode selalu ditampung kembali ke variabel.
  2. Menggunakan + untuk menyambung teks dengan angka. Compiler menolaknya ketika Option Strict On aktif, dan perbaikannya adalah memilih & atau beralih ke interpolasi.
  3. Mengambil potongan dengan indeks di luar batas. Substring yang dimulai melewati panjang string atau berisi panjang potongan negatif memicu exception, sehingga batas indeks diperiksa dengan Length terlebih dahulu pada data yang panjangnya tidak pasti.

Ketiganya bermuara pada kebiasaan yang sama, yaitu membaca tanda tangan metode dan batas indeksnya sebelum dipanggil, alih-alih mengandalkan ingatan atas isi stringnya.

Ringkasan#

  • String bersifat immutable, sehingga setiap metode mengembalikan string baru dan hasilnya perlu ditampung agar perubahan terpakai.
  • Operator & menyambung teks dan angka dengan aman, sedangkan interpolasi berawalan $ menyisipkan ekspresi apa pun ke dalam teks melalui kurung kurawal.
  • Metode yang paling sering digunakan adalah Length, ToUpper, ToLower, Substring, Trim, Replace, dan Split, dengan indeks dimulai dari nol.
  • Operator = membandingkan isi string secara peka huruf besar-kecil, sedangkan String.Equals dengan StringComparison mengatur mode perbandingannya.

Referensi#