10.
String dan Karakter
Pengantar
Pada bab ini, akan dikenalkan kapabilitas
pemrosesan karakter dan string Visual Basic dan didemonstrasikan kegunaan
ekspresi reguler dalam mencari pola di dalam teks. Teknik-teknik yang disajikan
pada bab ini dapat dipakai untuk mengembangkan editor teks, pengolah kata, dan
perangkat-lunak pemrosesan teks lainnya. Pada bab ini, akan diberikan
penjelasan detil tentang kapabilitas kelas String
dan tipe Char dari namespace System, dan kelas StringBuilder dari namespace System.Text, dan kelas Regex dan Match
dari namespace System.Text.Reguler-Expressions.
Dasar
Karakter dan String
Karakter merupakan blok pembangun dasar
dari kode sumber Visual Basic. Setiap program terdiri-dari karakter-karakter
yang, ketika dikelompokkan bersama, menciptakan sebuah runtun karakter yang
bisa diinterpretasikan oleh kompiler sebagai instruksi dalam menyelesaikan
sebuah pekerjaan. Di samping karakter normal, program juga dapat memuat
konstanta karakter. Konstanta karakter adalah sebuah karakter yang
direpresentasikan sebagai sebuah nilai integer, yang dinamakan dengan kode
karakter. Sebagai contoh, nilai integer 112 berkaitan dengan konstanta karakter
“z”c. Himpunan karakter Unicode
merepresentasikan semua himpunan karakter internasional, termasuk di dalamnya
himpunan karakter ASCII.
String adalah sederet karakter yang
diperlakukan sebagai satu unit. Karakter-karakter tersebut dapat berupa huruf
besar, huruf kecil, dijit, dan berbagai karakter spesial, seperti +, -, *, /,
$, dan lainnya. String adalah sebuah objek dari kelas String di dalam namespace System.
Literal string atau konstanta string (sering juga dipanggil dengan objek String literal) adalah runtun karakter
yang diapit oleh dua tanda kutip ganda, sebagai berikut:
"Djumanggal Sianipar"
"Jl. Medan KM 10.5 Pematang
Siantar"
"Sumut, Indonesia"
"(0622) 555-1212"
Sebuah deklarasi dapat menugaskan suatu
literal String kepada referensi String. Deklarasi
Dim warna As String = "biru"
menginisialisasi referensi String, warna, dengan objek literal String,
“biru”.
Konstruktor
String
Kelas String menyediakan tiga konstruktor untuk menginisialisasi objek String dalam berbagai cara. Kode 10.1
mendemonstrasikan kegunaan ketiga konstruktor tersebut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
' Kode 10.1: KonstruktorString.vb
' Demonstrasi konstruktor kelas String.
Imports System.Windows.Forms
Module modKonstruktorString
Sub Main()
Dim arrayKarakter As Char()
Dim keluaran As String
Dim kutip As Char =
ChrW(34)
Dim stringAsli, string1, string2, string3, _
string4 As String
arrayKarakter = New Char() {"d"c, "a"c, "n"c, _
"a"c,
"u"c, " "c, "t"c, "o"c,
"b"c, "a"c}
' inisialisasi string
stringAsli = "Selamat Datang ke Danau Toba!"
string1 = stringAsli
string2 = New String(arrayKarakter)
string3 = New String(arrayKarakter, 6, 3)
string4 = New String("C"c, 5)
keluaran = "string1 = " & kuota &
string1 & kuota & _
vbCrLf & "string2 = " & kuota &
string2 & kuota & _
vbCrLf & "string3 = " & kuota &
string3 & kuota & _
vbCrLf & "string4 = " & kuota &
string4 & kuota
MessageBox.Show(keluaran,
"Konstruktor Kelas String",
_
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modKonstruktorString
|
Gambar 10.1 Keluaran
program pada kode 10.1
Pada baris 11, variabel kutip dideklarasikan dan ditugasi nilai
yang merupakan nilai balik oleh fungsi ChrW
ketika ChrW menerima nilai 34. Nilai
yang dilewatkan kepada ChrW adalah
kode karakter Unicode. Fungsi ChrW
menghasilkan nilai balik berupa sebuah karakter bertipe Char. Pada kasus ini, fungsi ChrW
menghasilkan sebuah karakter kutip ganda (“).
Baris 15-16 mengalokasikan array Char, arrayKarakter, yang memuat sepuluh karakter. Sufiks c yang ditempatkan di akhir setiap String akan mengkonversinya menjadi
literal karakter. Hal ini dilakukan karena Option
Strict melarang konversi implisit dari String
menjadi tipe Char.
Baris 19 menugaskan string literal “Selamat Datang ke Danau Toba” kepada
referensi String, stringAsli. Baris 20 menetapkan string1 untuk menunjuk ke literal String, stringAsli.
Baris 21 menugaskan sebuah objek String yang baru kepada string2, menggunakan konstruktor String yang mengambil sebuah array
karakter sebagai argumen. Objek String
yang baru memuat salinan karakter-karakter di dalam array arrayKarakter.
Baris 22 menugaskan sebuah objek String baru kepada string3, menggunakan konstruktor String yang mengambil sebuah array Char dan dua Integer
sebagai argumen. Argumen kedua menspesifikasi posisi indeks awal (offset) dari karakter-karakter di dalam
array yang akan disalin. Argumen ketiga menspesifikasi jumlah karakter yang
akan disalin. Objek String yang baru memuat salinan dari sejumlah karakter di
dalam array.
Baris 23 menugaskan sebuah objek String yang baru kepada string4, menggunakan konstruktor String yang mengambil sebuah karakter
dan sebuah Integer sebagai argumen,
yang menspesifikasi berapa kali karakter tersebut (argumen pertama) diulang di
dalam String.
Properti
Length dan Chars, dan Metode CopyTo
Aplikasi pada kode 10.2 menyajikan
properti String, Chars, yang memfasilitasi pengambilan
sembarang karakter di dalam String,
dan properti String, Length, yang menghasilkan panjang String. Metode String, CopyTo, menyalin
sejumlah karakter dari sebuah String
ke dalam array Char.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
' Kode 10.2: PelbagaiString.vb
' Menggunakan properti Length dan Chars, dan metode CopyTo
' dari kelas string.
Imports System.Windows.Forms
Module modPelbagaiString
Sub Main()
Dim string1, keluaran As
String
Dim arrayKarakter As Char()
Dim i As Integer
Dim kutip As Char =
ChrW(34)
string1 = "danau toba"
arrayKarakter = New Char(5) {}
' menampilkan string
keluaran = "string1: " & kutip &
string1 & kutip
' menguji properti Length
keluaran &= vbCrLf
& "Panjang dari string1:
" & string1.Length
' loop menjelajahi
karakter-karakter di dalam string1
' dan menampilkannya
secara terbalik
keluaran &= vbCrLf
& "String yang dibalik
adalah: "
For i = string1.Length - 1 To
0 Step -1
keluaran &=
string1.Chars(i)
Next
' menyalin
karakter-karakter dari string1 ke dalam arrayKarakter
string1.CopyTo(0,
arrayKarakter, 0, 5)
keluaran &= vbCrLf
& "Array karakter adalah:
"
For i = 0 To
arrayKarakter.GetUpperBound(0)
keluaran &=
arrayKarakter(i)
Next
MessageBox.Show(keluaran,
"Demonstrasi Properti"
& _
" Length dan Chars", _
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modPelbagaiString
|
Gambar 10.2 Keluaran
program pada kode 10.2
Pada contoh ini, diciptakan sebuah
aplikasi yang menentukan panjang suatu String,
membalikkan urutan karakter di dalam String,
dan menyalin sederet karakter dari String ke dalam array karakter.
Baris 22 menggunakan properti String, Length, untuk menentukan jumlah karakter di dalam String string1. Seperti array, String
selalu mengetahui ukurannya sendiri.
Baris 29-30 menampilkan semua karakter String string1 dalam urutan terbalik
pada keluaran. Properti String, Chars, menghasilkan karakter yang berlokasi pada indeks tertentu di
dalam String. Properti Chars mengambil sebuah argumen Integer yang menspesifikasi indekas dan
menghasilkan karakter pada indeks tersebut. Seperti array, elemen pertama suatu
String adalah indeks 0.
Baris 33 menggunakan metode CopyTo untuk menyalin sejumlah karakter
dari sebuah String (string1) ke dalam array karakter (arrayKarakter). Argumen pertama yang
diberikan kepada metode CopyTo
adalah indeks awal penyalinan karakter di dalam String. Argumen kedua adalah array karakter, destinasi
karakter-karakter yang akan disalin. Argumen ketiga adalah indeks yang
menspesifikasi lokasi untuk menempatkan karakter-karakter yang disalin di dalam
array karakter. Argumen terakhir adalah jumlah karakter yang akan disalin dari String.
Perbandingan
String
Dua contoh berikutnya akan
mendemonstrasikan berbagai metode yang disediakan Visual Basic untuk
membandingkan objek-objek String.
Untuk mengerti bagaimana satu String
dapat “lebih dari” atau “kurang dari” String
lainnya, perhatikan proses alfabetisasi nama. Pembaca akan, tanpa ragu,
menempatkan “Djumanggal” sebelum “Jumanggal”, karena huruf pertama dari “Djumanggal” berada sebelum huruf
pertama dari “Jumanggal” di dalam
alfabet.
Komputer dapat mengurutkan
karakter-karakter secara alfabetik karena tersusun secara internal sebagai kode
numerik Unicode. Ketika membandingkan dua String,
komputer hanya perlu membandingkan kode-kode numerik di dalam kedua String tersebut.
Kelas String menyediakan beberapa cara dalam membandingkan String.
Aplikasi pada kode 10.3 mendemonstrasikan kegunaan metode Equals, metode CompareTo,
dan operator ekualitas (=).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
' Kode 10.3:
PerbandinganString.vb
' Membandingkan string.
Imports
System.Windows.Forms
Module modBanding
Sub
Main()
Dim
string1 As String = "hallo"
Dim
string2 As String = "selamat jalan"
Dim
string3 As String = "Danau Toba"
Dim
string4 As String = "danau toba"
Dim
keluaran As String
Dim
kutip As Char = ChrW(34)
' menampilkan nilai-nilai dari empat
String
keluaran = "string1 = " & kutip & string1 & kutip & _
vbCrLf & "string2 = " & kutip &
string2 & kutip & _
vbCrLf & "string3 = " & kutip &
string3 & kutip & _
vbCrLf & "string4 = " & kutip &
string4 & kutip & _
vbCrLf & vbCrLf
' menguji ekualitas menggunakan
metode Equals
If
(string1.Equals("hallo"))
Then
keluaran &= "string1 sama dengan " &
kutip & "hallo" & _
kutip & vbCrLf
Else
keluaran &= "string1 tidak sama dengan "
& kutip & _
"hallo" & kutip & vbCrLf
End
If
' menguji ekualitas dengan =
If
string1 = "hallo" Then
keluaran &= "string1 sama dengan " &
kutip & "hallo" & _
kutip & vbCrLf
Else
keluaran &= "string1 tidak sama dengan "
& kutip & _
"hallo" & kutip & vbCrLf
End
If
' menguji kasus perbandingan
ekualitas
If
(String.Equals(string3, string4)) Then
keluaran &= "string3 sama dengan string4"
& vbCrLf
Else
keluaran &= "string3 tidak sama dengan string4"
& vbCrLf
End
If
' menguji CompareTo
keluaran &= vbCrLf & "string1.CompareTo(string2) adalah
" & _
string1.CompareTo(string2) &
vbCrLf & _
"string2.CompareTo(string1) adalah " & _
string2.CompareTo(string1) &
vbCrLf & _
"string1.CompareTo(string1) adalah " & _
string1.CompareTo(string1) &
vbCrLf & _
"string3.CompareTo(string4) adalah " & _
string3.CompareTo(string4) &
vbCrLf & _
"string4.CompareTo(string3) adalah " & _
string4.CompareTo(string3) &
vbCrLf & vbCrLf
MessageBox.Show(keluaran, "Demonstrasi" & _
" Perbandingan String", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End
Sub ' Main
End Module '
modBanding
|
Gambar 10.3 Keluaran
program pada kode 10.3
Kondisi struktur If (baris 24) menggunakan metode Equals untuk membandingkan string1
dan litera String “hallo” untuk menentukan apakah keduanya
sama. Metode Equals (diwarisi oleh String dari kelas Object) menguji ekualitas dua objek (yaitu, memeriksa apakah kedua
objek memuat isi yang identik). Metode ini menghasilkan True jika kedua objek sama dan menghasilkan False jika sebaliknya. Pada contoh ini, kondisi bernilai True, karena string1 mereferensi objek literal String “hallo”. Metode Equals menggunakan komparasi
leksikografikal, dimana nilai-nilai Unicode Integer yang mewakili tiap karakter di dalam setiap String dibandingkan. Metode Equals membandingkan nilai-nilai
Unicode Integer yang
merepresentasikan karakter-karakter di dalam tiap String. Perbandingan atas String
“hallo” dengan string “HALLO” akan menghasilkan False, karena representasi Integer dari huruf kecil berbeda dari
representasi Integer dari huruf
besar.
Kondisi pada struktor If kedua (baris 34) menggunakan
operator ekualitas (=) untuk membandingkan String
string1 dengan literal String “hallo”. Dalam Visual Basic, operator ekualitas juga menggunakan
perbandingan leksikografikal dalam membandingkan dua String. Jadi, kondisi pada struktur If menghasilkan True,
karena nilai-nilai dari string1 dan
“hallo” sama.
Pengujian ekualitas String antara string3 dan string4
(baris 44) diberikan untuk mengilustrasikan bahwa perbandingan bersifat
sensitif terhadap jenis huruf. Di sini, metode Shared, Equals, dipakai
untuk membandingkan nilai-nilai dari dua String.
“Danau Toba” tidak sama dengan “danau toba”, sehingga kondisi pada
struktur If bernilai False, dan pesan “string3 tidak sama dengan string4” akan ditampilkan pada keluaran.
Baris 52-60 menggunakan metode CompareTo untuk membandingkan dua objek
String. Metode ini menghasilkan 0 jika kedua String sama, -1 jika
String pemanggil CompareTo kurang
dari String yang dilewatkan sebagai
argumen, dan 1 jika String pemanggil CompareTo lebih dari String
yang dilewatkan sebagai argumen. Metode CompareTo juga menggunakan perbandingan
leksikografikal.
Perhatikan bahwa CompareTo memandang string3
lebih dari string4. Satu-satunya
perbedaan antara kedua string adalah bahwa string3
memuat dua huruf besar. Contoh ini mengilustrasikan bahwa huruf besar memiliki
nilai lebih tinggi dalam himpunan karakter Unicode dibandingkan huruf kecil.
Aplikasi pada kode 10.4 menunjukkan
bagaimana mengujia apakah sebuah instans String
diawali atau diakhiri dengan suatu String
yang diberikan. Metode StartsWith
menentukan jika sebuah instans String
diawali dengan teks String yang
dilewatkan sebagai argumen. Metode EndsWith menentukan jika sebuah instans String diakhiri dengan teks String yang dilewatkan sebagai argumen.
Metode Main pada aplikasi modAwalAkhir mendefinisikan sebuah
array String (dinamakan strings), yang memuat “berawal”, “mengawali”, “berakhir”,
“diakhiri”.
Baris 20 menggunakan metode StartsWith, yang mengambil sebuah
argumen String. Kondisi pada
struktur If menentukan apakah String pada indeks i diawali dengan string “ber”.
Jika ya, metode menghasilkan True
dan menampilkan strings(i) pada
keluaran.
Baris 32 menggunakan metode EndsWith, yang juga mengambil sebuah
argumen String. Kondisi pada
struktur If menentukan apakah String pada indeks i diakhiri dengan string “ali”.
Jika ya, metode menghasilkan True,
dan strings(i) ditampilkan pada
keluaran.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
' Kode 10.4: StringAwalAkhir.vb
' Demonstrasi metode StartsWith dan EndsWith.
Imports System.Windows.Forms
Module modAwalAkhir
Sub Main()
Dim strings As String()
Dim keluaran As String
= ""
Dim i As Integer
Dim kutip As Char =
ChrW(34)
strings = New String() {"berawal", "mengawali", _
"berakhir", "mengakhiri"}
' menguji setiap string
untuk melihat apakah diawali dengan "ber"
For i = 0 To
strings.GetUpperBound(0)
If strings(i).StartsWith("ber") Then
keluaran &=
kutip & strings(i) & kutip & _
" diawali dengan " & kutip
& "ber" & kutip
& vbCrLf
End If
Next
keluaran &= vbCrLf
' menguji apakah setiap
string diakhir dengan "ali"
For i = 0 To
strings.GetUpperBound(0)
If strings(i).EndsWith("ali")
Then
keluaran &=
kutip & strings(i) & kutip & _
" diakhir dengan " & kutip
& "ali" & kutip
& vbCrLf
End If
Next
MessageBox.Show(keluaran,
"Demonstrasi Metode StartsWith
" & _
" dan EndsWith",
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modAwalAkhir
|
Gambar 10.4 Keluaran
program pada kode 10.4
Metode
GetHashCode
Seringkali, dibutuhkan untuk menyimpan
String dan tipe data lain dengan sebuah cara, dimana informasi dapat ditemukan
dengan cepat. Salah satu cara terbaik dalam membuat informasi menjadi sangat
mudah diakses adalah dengan menyimpannya pada tabel hash. Tabel hash menyimpan
sebuah objek dengan terlebih dahulu melakukan kalkulasi spesifik pada objek
tersebut, yang akan menghasilkan kode hash. Objek kemudian disimpan pada lokasi
dalam tabel hash yang ditentukan oleh kode hash yang dihitung. Ketika program
perlu menarik informasi tersebut, kalkulasi yang sama dilakukan, menghasilkan
kode hash yang sama.
Sembarang objek dapat disimpan dalam
tabel hash. Kelas Object
mendefinisikan GetHashCode untuk
melakukan perhitungan kode-hash. Meskipun semua kelas mewarisi metode ini dari
kelas Object, Anda direkomendasikan
untuk mendefinisikan-ulang implementasi defaultnya. Metode String Overrides GetHashCode dipakai untuk menyediakan distribusi
kode-hash berdasarkan isi String.
Contoh pada kode 10.5 mendemonstrasikan
aplikasi metode GetHashCode atas dua
String (“hallo” dan “Hallo”). Di
sini, nilai kode-hash untuk tiap String
akan berbeda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
' Kode 10.5: KodeHashString.vb
' Demonstrasi metode GetHashCode dari kelas String.
Imports System.Windows.Forms
Module modKodeHash
Sub Main()
Dim string1 As String
= "hallo"
Dim string2 As String
= "Hallo"
Dim keluaran As String
Dim kutip As Char =
ChrW(34)
keluaran = "Kode hash untuk " & kutip
& string1 & _
kutip & " adalah " &
string1.GetHashCode() & vbCrLf
keluaran &= "Kode hash untuk " & kutip
& string2 & _
kutip & " adalah " & string2.GetHashCode()
MessageBox.Show(keluaran,
_
"Demonstrasi metode String GetHashCode")
End Sub ' Main
End Module ' modKodeHash
|
Gambar 10.5 Keluaran
program pada kode 10.5
Mencari
Lokasi Karakter dan Substring
Dalam banyak aplikasi, diperlukan untuk
mencari sebuah karakter atau himpunan karakter di dalam suatu String. Sebagai contoh, programer yang
menciptakan pengolah kata akan memerlukan kapabilitas pencarian dokumen.
Aplikasi pada kode 10.6 mendemonstrasikan beberapa versi dari metode IndexOf, IndexOfAny, LastIndexOf,
dan LastIndexOfAny, yang mencari
karakter atau substring di dalam sebuah String.
Semua pencarian pada contoh ini dilakukan pada String huruf (diinisialisasi dengan “abcdef-ghijklmabcdefghijklm”) di dalam Main.
Baris 14-21 menggunakan metode IndexOf untuk mencari lokasi kemunculan
pertama atas sebuah karakter atau substring di dalam String. Jika IndexOf
menemukan karakter yang dicari, IndexOf
akan menghasilkan indeks dari karakter tersebut di dalam String; sebaliknya, IndexOf
menghasilkan -1. Ekspresi pada baris
18 menggunakan sebuah versi dari metode IndexOf
yang mengambil dua argumen, yaitu karakter yang akan dicari dan indeks awal
pencarian. Metode ini tidak melakukan pencarian pada semua karakter yang berada
sebelum indekas awal (pada kasus ini 1). Ekspresi pada baris 21 menggunakan
versi lain dari metode IndexOf yang
mengambil tiga argumen, yaitu karakter yang akan dicari, indeks awal pencarian,
dan jumlah karakter yang akan dicari.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
' Kode 10.6: StringIndexMethods
' Menggunakan
metode-metode pencarian String.
Imports
System.Windows.Forms
Module modMetodeIndeks
Sub
Main()
Dim
huruf As String = "abcdefghijklmabcdefghijklm"
Dim
keluaran As String
Dim
hurufPencarian As Char() = New Char() {"c"c, "a"c, "$"c}
' menguji IndexOf untuk mencari
lokasi sebuah karakter di dalam string
keluaran &=
"""c"" berlokasi
pada indeks " & _
huruf.IndexOf("c"c)
keluaran &= vbCrLf &
"""a"" berlokasi
pada indeks " & _
huruf.IndexOf("a"c, 1)
keluaran &= vbCrLf &
"""$"" berlokasi
pada indeks " & _
huruf.IndexOf("$"c, 3, 5)
' menguji LastIndexOf untuk mencari sebuah karakter di
dalam sebuah string
keluaran &= vbCrLf & vbCrLf & "Kemunculan terkahir ""c"" berlokasi pada " & _
"indeks " & huruf.LastIndexOf("c"c)
keluaran &= vbCrLf & "Kemunculan terakhir ""a"" berlokasi pada
indeks " & _
huruf.LastIndexOf("a"c, 25)
keluaran &= vbCrLf & "Kemunculan terakhir
""$"" berlokasi pada indeks " & _
huruf.LastIndexOf("$"c, 15,
5)
' menguji IndexOf untuk mencari
substring di dalam sebuah string
keluaran &= vbCrLf & vbCrLf
& """def"" berlokasi pada" & _
" indeks " & huruf.IndexOf("def")
keluaran &= vbCrLf &
"""def"" berlokasi
pada indeks " & _
huruf.IndexOf("def", 7)
keluaran &= vbCrLf &
"""toba""
berlokasi pada indeks " &
_
huruf.IndexOf("toba", 5,
15)
' menguji LastIndexOf untuk mencari
substring di dalam sebuah string
keluaran &= vbCrLf & vbCrLf & "Kemunculan terakhir ""def"" berlokasi pada " & _
"indeks " & huruf.LastIndexOf("def")
keluaran &= vbCrLf & "Kemunculan terakhir ""def"" berlokasi pada
indeks " & _
huruf.LastIndexOf("def",
25)
keluaran &= vbCrLf & "Kemunculan terakhir ""toba"" berlokasi pada " & _
"indeks " & huruf.LastIndexOf("toba", 20, 15)
' menguji IndexOfAny untuk mencari
kemunculan pertama karakter
' di dalam array
keluaran &= vbCrLf & vbCrLf
& "Kemunculan pertama
""c""," & _
" ""a"" or
""$"" berlokasi pada " & _
huruf.IndexOfAny(hurufPencarian)
keluaran &= vbCrLf & "Kemunculan pertama
""c"", ""a"" or " & _
"""$""
berlokasi pada " & _
huruf.IndexOfAny(hurufPencarian, 7)
keluaran &= vbCrLf & "Kemunculan pertama ""c"",
""a"" or " & _
"""$""
berlokasi pada " & _
huruf.IndexOfAny(hurufPencarian, 20,
5)
' menguji LastIndexOfAny untuk mencari kemunculan
terakhir karakter
' di dalam array
keluaran &= vbCrLf & vbCrLf
& "Kemunculan terakhir ""c""," & _
" ""a"" or
""$"" berlokasi pada " & _
huruf.LastIndexOfAny(hurufPencarian)
keluaran &= vbCrLf & "Kemunculan terakhir
""c"", ""a"" or " & _
"""$"" berlokasi pada " & _
huruf.LastIndexOfAny(hurufPencarian,
1)
keluaran &= vbCrLf & "Kemunculan terakhir ""c"",
""a"" or " & _
"""$"" berlokasi pada " & _
huruf.LastIndexOfAny(hurufPencarian,
25, 5)
MessageBox.Show(keluaran, _
"Demonstrasi Metode-Metode Kelas String")
End
Sub ' Main
End Module '
modMetodeIndeks
|
Baris 24-32 menggunakan metode LastIndexOf untuk mencari lokasi
kemunculan pertama dari sebuah karakter dalam String. Metode ini melakukan pencarian dari akhir String sampai ke awal String. Jika metode LastIndexOf menemukan karakter yang
dicari, ia akan menghasilkan indeks dari karakter tersebut di dalam String; sebaliknya, LastIndexOf akan menghasilkan -1. Ada
tiga versi LastIndexOf yang
melalukan pencarian karakter di dalam String.
Ekspresi pada baris 25 menggunakan versi metode LastIndexOf yang mengambil karakter yang akan dicari sebagai
argumen. Ekspresi pada baris 28 menggunakan versi metode LastIndexOf yang mengambil dua argumen, yaitu karakter yang dicari
dan indeks tertinggi (dimana pencarian mundur dilakukan). Ekspresi pada baris
31 menggunakan versi ketiga dari metode LastIndexOf
yang mengambil tiga argumen, yaitu karakter yang akan dicari, indeks awal
pencarian mundur, dan jumlah karakter yang akan dicari (potongan String tempat melakukan pencarian).
Baris 34-51 menggunakan versi IndexOf dan LastIndexOf yang mengambil sebuah String sebagai argumen pertama. Versi ini identik dengan yang
dideskripsikan sebelumnya.
Gambar 10.6 Keluaran
program pada kode 10.6
Baris 55-79 menggunakan versi IndexOfAny dan LastIndexOfAny yang mengambil sebuah array karakter sebagai argumen
pertama. Versi ini identik dengan yang dideskripsikan sebelumnya.
Mengekstrak
Substring dari String
Kelas String menyediakan dua metode Substring, yang bisa dipakai untuk
menciptakan objek String baru dengan
menyalin sebagian dari objek String
yang sudah ada. Setiap metode menghasilkan sebuah objek String yang baru. Aplikasi pada kode 10.7 mendemonstrasikan
kegunaan dari kedua metode.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
' Kode 10.7: SubString.vb
' Demonstrasi metode Substring.
Imports System.Windows.Forms
Module modSubString
Sub Main()
Dim huruf As String =
"abcdefghijklmabcdefghijklm"
Dim keluaran As String
Dim kutip As Char =
ChrW(34)
' memanggil metode
SubString dan melewatkan kepadanya satu parameter
keluaran = "Substring dari indeks 20 sampai akhir
adalah " & _
kutip &
huruf.Substring(20) & kutip & vbCrLf
' memanggil metode
SubString dan melewatkan kepadanya dua parameter
keluaran &= "Substring dari indeks 0 sampai 6 adalah
" & _
kutip &
huruf.Substring(0, 6) & kutip
MessageBox.Show(keluaran,
_
"Demonstrasi Metode Substring")
End Sub ' Main
End Module ' modSubString
|
Gambar 10.7 Keluaran
program pada kode 10.7
Statemen pada baris 14-15 menggunakan
metode Substring yang mengambil satu
argumen Integer. Argumen itu
menspesifikasi indeks awal dari karaketer-karakter yang akan disalin dari String asli. Substring yang dihasilkan
memuat salinan karakter-karakter dari indeks awal sampai akhir String asli. Jika indeks yang
dispesifikasi di dalam argumen berada di luar rentang String, maka program akan melemparkan ArgumentOutOfRangeException.
Versi kedua dari metode Substring (baris 19) mengambil dua
argumen Integer. Argumen pertama
menspesifikasi indeks awal dari semua karakter yang akan disalin dari String asli. Argumen kedua
menspesifikasi panjang substring yang akan disalin. Substring yang dihasilkan
memuat salinan sejumlah karakter dari String
asli.
Menyambung
String
Operator & (yang didiskusikan pada Bab 2) bukanlah satu-satunya cara
dalam melakukan penyambungan String.
Metode Shared Concat dari kelas String (kode 10.8) menyambung dua objek
String dan menghasilkan sebuah objek
String baru yang memuat
karakter-karakter yang digabungkan dari kedua String asli. Baris 18 menyambungkan karakter-karakter dari string2 ke akhir string1 menggunakan metode Concat.
Statemen pada baris 18 tidak memodifikasi String
asli.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
' Kode 10.8: PenyambunganString.vb
' Demonstrasi Metode Concat kelas String.
Imports System.Windows.Forms
Module modPenyambunganString
Sub Main()
Dim string1 As String
= "Danau "
Dim string2 As String
= "Toba!!!"
Dim keluaran As String
keluaran = "string1 = """ & string1 & """"
& _
vbCrLf & "string2 = """ & string2 & """"
keluaran &= vbCrLf
& vbCrLf & _
"Hasil dari String.Concat(string1, string2) = " & _
String.Concat(string1,
string2)
MessageBox.Show(keluaran,
_
"Demonstrasi Metode Concat")
End Sub ' Main
End Module ' modPenyambunganString
|
Gambar 10.8 Keluaran
program pada kode 10.8
Berbagai
Metode String
Kelas String menyediakan beberapa
metode yang menghasilkan salinan String
termodifikasi. Aplikasi pada kode 10.9 mendemonstrasikan kegunaan dari semua
metode tersebut, yang mencakup metode Replace,
ToLower, ToUpper, Trim, dan ToString.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
' Kode 10.9: BerbagaiString.vb
' Demonstrasi metode Replace, ToLower, ToUpper, Trim,
' dan ToString.
Imports System.Windows.Forms
Module modBerbagaiString
Sub Main()
Dim string1 As String
= "Horas!"
Dim string2 As String
= "DANAU TOBA "
Dim string3 As String
= " siantar "
Dim keluaran As String
Dim kutip As Char =
ChrW(34)
Dim i As Integer
keluaran = "string1 = " & kutip &
string1 & kutip & _
vbCrLf & "string2 = " & kutip &
string2 & kutip & _
vbCrLf & "string3 = " & kutip &
string3 & kutip
' memanggil metode Replace
keluaran &= vbCrLf
& vbCrLf & "Menggantikan
" & kutip & "a"
& _
kutip & " dengan " & kutip &
"A" & kutip & _
" di dalam string1: " & kutip
& string1.Replace("a"c,
"A"c) & _
kutip
' memanggil ToLower dan
ToUpper
keluaran &= vbCrLf
& vbCrLf & "string1.ToUpper()
= " & _
kutip &
string1.ToUpper() & kutip & vbCrLf & _
"string2.ToLower()
= " & kutip & string2.ToLower() & _
kutip
' memanggil metode Trim
keluaran &= vbCrLf
& vbCrLf & "string3
setelah Trim = " & _
kutip & string3.Trim()
& kutip
' memanggil metode
ToString
keluaran &= vbCrLf
& vbCrLf & "string1 =
" & _
kutip &
string1.ToString() & kutip
MessageBox.Show(keluaran,
_
"Demonstrasi Berbagai Metode Kelas String")
End Sub ' Main
End Module ' modBerbagaiString
|
Gambar 10.9 Keluaran
program pada kode 10.9
Baris 24 menggunakan metode Replace untuk menghasilkan sebuah objek
String baru, menggantikan setiap
karakter “a”c dengan karakter “A”c di dalam string1. Metode Replace
mengambil dua argumen, yaitu sebuah String
yang akan diganti dan String lain
yang akan menggantikan setiap kemunculan argumen pertama. String asli tetap tidak berubah. Jika tidak ada kemunculan argumen
pertama di dalam String, maka metode
menghasilkan String asli.
Metode ToUpper menghasilkan sebuah objek String baru (baris 29) yang menggantikan sembarang huruf kecil
dalam string1 dengan huruf besar
ekivalennya. Metode ini menghasilkan sebuah objek String baru, memuat String
yang terkonversi; String asli tetap
tidak berubah. Jika tidak ada karakter yang akan diubah menjadi huruf besar,
maka metode akan menghasilkan String
asli. Metode ToLower menghasilkan
sebuah objek String baru (baris 30)
yang menggantikan sembarang huruf besar dalam string1 dengan huruf kecil ekivalennya. Metode ini menghasilkan
sebuah objek String baru, memuat String yang terkonversi; String asli tetap tidak berubah. Jika
tidak ada karakter yang akan diubah menjadi huruf kecil, maka metode akan
menghasilkan String asli.
Baris 35 menggunakan metode Trim untuk menghapus semua karakter
spasi yang muncul di awal dan di akhir sebuah String. Tanpa memodifikasi String
asli, metode ini menghasilkan sebuah objek String
baru yang memuat String (tanpa
karakter spasi di depan dan di belakang String
tersebut). Versi lain dari metode Trim
mengambil sebuah karakter array sebagai argumen, menghapus semua karakter spasi
dari awal dan akhir array, dan menempatkan hasilnya di dalam sebuah String.
Baris 39 menggunakan metode ToString untuk menunjukkan bahwa berbagai
metode yang dipakai pada aplikasi ini tidak memodifikasi string1. Mengapa metode ToString
disediakan untuk kelas String? Dalam
Visual Basic .NET, semua objek diderivasi dari kelas Object, yang mendefinisikan metode ToString sebagai Overridable.
Jadi, metode ToString dapat
dipanggil untuk mendapatkan representasi String
atas sembarang objek. Jika sebuah kelas yang mewarisi kelas Object (seperti kelas String) tidak mendefinisikan-ulang
metode ToString, maka kelas tersebut
menggunakan versi default dari kelas Object,
menghasilkan sebuah String yang
memuat nama kelas objek.
Kelas
StringBuilder
Kelas String menyediakan beberapa kapabilitas untuk memproses String. Namun, isi String tersebut tidak akan berubah. Operasi, yang kelihatan seperti
menyambung dua String, pada
kenyataannya, menugaskan referensi-referensi String kepada String
yang baru saja diciptakan (misalnya, operator &= menciptakan sebuah String
baru dan menugaskan referensi String
asli kepada String yang baru saja
diciptakan).
Pada beberapa diskusi ke depan,
beberapa fitur kelas StringBuilder
(namespace System.Text) akan dipakai
untuk menciptakan dan memanipulasi informasi string secara dinamis. Setiap StringBuilder dapat menyimpan sejumlah
tertentu karakter yang dispesifikasi oleh kapasitasnya. Penyimpanan yang
melebihi kapasitas suatu StringBuilder
menyebabkan kapasitas menjadi mengembang untuk mengakomodasi karakter-karakter
tambahan. Seperti yang akan Anda perhatikan, beberapa anggota kelas StringBuilder, seperti metode Append dan AppendFormat, dapat digunakan untuk operasi penyambungan seperti
operator & dan &= pada kelas String.
Kelas StringBuilder menyediakan enam konstruktor teroverload. Module modKonstruktor-Builder (kode 10.10)
mendemonstrasikan kegunaan dari tiga konstruktor teroverload tersebut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
' Kode 10.10: KonstruktorStringBuilder.vb
' Demonstrasi konstruktor kelas StringBuilder.
Imports System.Text
Imports System.Windows.Forms
Module modKonstruktorBuilder
Sub Main()
Dim buffer1, buffer2, buffer3 As StringBuilder
Dim kutip As Char =
ChrW(34)
Dim keluaran As String
buffer1 = New StringBuilder()
buffer2 = New StringBuilder(10)
buffer3 = New StringBuilder("hallo")
keluaran = "buffer1 = " & kutip &
buffer1.ToString() & _
kutip & vbCrLf
keluaran &= "buffer2 = " & kutip & _
buffer2.ToString() &
kutip & vbCrLf
keluaran &= "buffer3 = " & kutip & _
buffer3.ToString() &
kutip
MessageBox.Show(keluaran,
_
"Demonstrasi Konstruktor Kelas StringBuilder")
End Sub ' Main
End Module ' modKonstruktorBuilder
|
Gambar 10.10 Keluaran
program pada kode 10.10
Baris 14 menggunakan konstruktor StringBuilder tanpa-argumen untuk
menciptakan sebuah StringBuilder
yang tidak memuat karakter apapun dan memiliki kapasitas awal default 16
karakter. Baris 15 menggunakan konstruktor StringBuilder
yang mengambil sebuah argumen Integer
untuk menciptakan sebuah StringBuilder
yang tidak memuat karakter apapun dan memiliki kapasitas awal yang
dispesifikasi di dalam argumen Integer.
Baris 16 menggunakan konstruktor StringBuilder
yang mengambil sebuah argumen String
untuk menciptakan sebuah StringBuilder
yang memuat karakter-karakter argumen String.
Baris 18-25 menggunakan metode StringBuilder, ToString, untuk mendapatkan representasi String atas isi objek StringBuilder.
Metode ini menghasilkan string yang dimuat oleh String-Builder.
StringBuilder:
Properti Length dan Capacity, dan Metode EnsureCapacity
Kelas StringBuilder menyediakan properti Length dan Capacity
untuk menghasilkan jumlah karakter yang berada di dalam sebuah StringBuilder dan jumlah karakter yang
dapat disimpan di dalam sebuah StringBuilder
tanpa perlu mengalokasikan memori lebih. Kedua properti juga dapat menambah
atau mengurangi panjang atau kapasitas StringBuilder.
Metode EnsureCapacity membolehkan programer untuk menjamin bahwa sebuah StringBuilder memiliki kapasitas yang
mereduksi berapa kali kapasitas harus ditambah. Metode EnsureCapacity menggandakan kapasitas terkini instans StringBuilder.
Jika nilai yang digandakan ini lebih besar dari nilai yang diinginkan
programer, maka nilai ini menjadi kapasitas baru. Sebaliknya, EnsureCapacity mengubah kapasitas
dengan menambahkan satu pada kapasitas yang diinginkan diinginkan programer. Sebagai
contoh, jika kapasitas terkini adalah 17 dan Anda ingin mengubahnya menjadi 40,
maka 17 yang dikalikan 2 tidak lebih besar dari 40, sehingga akan dihasilkan
kapasitas baru menjadi 41. Jika kapasitas terkini adalah 23 dan diinginkan
untuk mengubanya menjadi 40, maka 23 yang dikalikan 2 akan menjadi kapasitas
baru (46). Program pada kode 10.11 mendemonstrasikan kegunaan dari metode dan
properti StringBuilder.
Program memuat satu StringBuilder, dinamakan buffer. Baris 11-12 menggunakan
konstruktor StringBuilder yang
mengambil sebuah argumen String
untuk menginstansiasi StringBuilder dan menginisialisasinya dengan “Hallo, apa kabarmu?”. Baris 15-17
menampilkan isi, panjang, dan kapasitas StringBuilder.
Pada jendela keluaran, perhatikan bahwa kapasitas awalnya adalah 32.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
' Kode 10.11: FiturStringBuilder.vb
' Demonstrasi beberapa fitur kelas StringBuilder.
Imports System.Text
Imports System.Windows.Forms
Module modFiturBuilder
Sub Main()
Dim i As Integer
Dim buffer As
StringBuilder = _
New StringBuilder("Hallo,
apa kabarmu?")
' menggunakan properti
Length dan Capacity
Dim output As String =
"buffer = " &
buffer.ToString & _
vbCrLf & "Panjang = " & buffer.Length
& vbCrLf & _
"Kapasitas = " & buffer.Capacity
' menggunakan metode
EnsureCapacity
buffer.EnsureCapacity(75)
output &= vbCrLf &
vbCrLf & "Kapasitas baru =
" & _
buffer.Capacity
' memotong StringBuilder
dengan menetapkan properti Length
buffer.Length = 10
output &= vbCrLf &
vbCrLf & "Panjang baru =
" & _
buffer.Length & vbCrLf
& "buffer = "
' menggunakan Indekse
StringBuilder
For i = 0 To
buffer.Length - 1
output &=
buffer(i)
Next
MessageBox.Show(output,
"Beberapa fitur StringBuilder")
End Sub ' Main
End Module ' modFiturBuilder
|
Baris 20 mengekspansi kapasitas StringBuilder menjadi minimum 75
karakter. Kapasitas terkini (32) yang dikalikan dengan 2 akan bernilai kurang
dari 75, sehingga metode EnsureCapacity
menambah kapasitas menjadi satu lebih besar dari 75 (yaitu, 76). Jika beberapa
karakter baru ditambahkan ke dalam sebuah StringBuilder
sehingga panjangnya melebihi kapasitasnya, maka kapasitasnya akan diekspansi
untuk mengakomodasi karakter-karakter tambahan dengan cara yang sama ketika
metode EnsureCapacity dipanggil.
Gambar 10.11 Keluaran
program pada kode 10.11
Baris 26 menggunakan aksesor Set pada properti Length untuk menetapkan panjang String-Builder menjadi 10. Jika panjang yang dispesifikasi kurang
dari jumlah karakter terkini di dalam StringBuilder,
maka isi StringBuilder akan dipotong
sesuai panjang yang diinginkan. Jika panjang yang dispesifikasi lebih dari
jumlah karakter terkini di dalam StringBuilder,
maka beberapa karakter null (karakter dengan representasi numerik 0, yang
menandai akhir sebuah String)
ditambahkan ke dalam StringBuilder
sampai jumlah total karakter di dalam StringBuilder
sama dengan panjang yang diinginkan.
Metode
StringBuilder: Append dan AppendFormat
Kelas StringBuilder menyediakan 19 metode Append teroverload yang membolehkan nilai-nilai berbagai tipe data
untuk ditambahkan ke akhir sebuah StringBuilder.
Visual Basic menyediakan beberapa versi metode Append untuk tiap tipe data primitif dan untuk array karakter, String, dan Object. Tiap versi metode ini mengambil sebuah argumen,
mengkonversinya menjadi sebuah String, dan menambahkannya (menempelkannya) pada
StringBuilder. Kode 10.12
mendemons-trasikan kegunaan dari beberapa metode Append.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
' Kode 10.12: AppendStringBuilder.vb
' Demonstrasi beberapa metode Append pada kelas StringBuilder.
Imports System.Text
Imports System.Windows.Forms
Module modAppendBuilder
Sub Main()
Dim nilaiObjek As Object
= "hallo"
Dim nilaiString As String
= "selamat jalan"
Dim arrayKarakter As Char() = {"a"c, "b"c,
"c"c, _
"d"c,
"e"c, "f"c}
Dim nilaiBoolean As
Boolean = True
Dim nilaiKarakter As Char
= "Z"c
Dim nilaiInteger As
Integer = 7
Dim nilaiLong As Long
= 1000000
Dim nilaiSingle As Single
= 2.5
Dim nilaiDouble As Double
= 33.333
Dim buffer As
StringBuilder = New
StringBuilder()
' menggunakan metode
Append untuk menempelkan nilai-nilai pada buffer
buffer.Append(nilaiObjek)
buffer.Append("
")
buffer.Append(nilaiString)
buffer.Append("
")
buffer.Append(arrayKarakter)
buffer.Append("
")
buffer.Append(arrayKarakter, 0, 3)
buffer.Append("
")
buffer.Append(nilaiBoolean)
buffer.Append("
")
buffer.Append(nilaiKarakter)
buffer.Append("
")
buffer.Append(nilaiInteger)
buffer.Append("
")
buffer.Append(nilaiLong)
buffer.Append("
")
buffer.Append(nilaiSingle)
buffer.Append(" ")
buffer.Append(nilaiDouble)
MessageBox.Show("buffer = " & buffer.ToString(), _
"Demonstrasi Metode Append StringBuilder", _
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modAppendBuilder
|
Gambar 10.12 Keluaran
program pada kode 10.12
Baris 24-42 menggunakan 10 metode Append teroverload untuk menempelkan
objek-objek yang diciptakan pada baris 10-21 di akhir StringBuilder. Metode Append
berperilaku sama dengan operator &
yang digunakan pada String.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
' Kode 10.13: AppendFormatStringBuilder.vb
' Demonstrasi metode AppendFormat.
Imports System.Text
Imports System.Windows.Forms
Module modAppendFormatBuilder
Sub Main()
Dim buffer As
StringBuilder = New
StringBuilder()
Dim string1, string2 As
String
' string terformat
string1 = "{0} ini seharga: {1:C}." &
vbCrLf
' string1
Dim arrayObjek As
Object() = New Object(1) {}
arrayObjek(0) = "mobil"
arrayObjek(1) = 1234.56
' menempelkan pada buffer
buffer.AppendFormat(string1, arrayObjek)
' string terformat
string2 = "Angka:{0:D3}. " & vbCrLf
& _
"Angka disejajarkan ke kanan dengan spasi:{0, 4}." &
vbCrLf & _
"Angka disejajarkan ke kiri dengan spasi:{0, -4}."
' menempelkan pada buffer
buffer.AppendFormat(string2,
5)
' menampilkan string
terformat
MessageBox.Show(buffer.ToString(), "Menggunakan AppendFormat", _
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modAppendFormatBuilder
|
Gambar 10.13 Keluaran
program pada kode 10.13
Kelas StringBuilder juga menyediakan metode AppendFormat, yang mengkonversi sebuah String menjadi format tertentu dan menempelkannya pada StringBuilder. Sebagai contoh, kode
10.13 mendemonstrasikan kegunaan dari metode ini.
Baris 14 menciptakan sebuah String yang
memuat informasi pemformatan. Informasi yang diapit kurung kurawal menentukan
bagaiman memformat data.
Baris 31 menggunakan sebuah versi dari AppendFormat, yang mengambil dua
parameter: sebuah String yang memuat sebuah format dan sebuah objek (dimana,
format diterapkan pada objek itu). Pada kasus ini, objek adalah angka 5.
Keluaran dari kode 10.13 menampilkan hasil dari penerapan kedua versi AppendFormat.
Metode
StringBuilder: Insert, Remove, dan Replace
Kelas StringBuilder menyediakan 18 metode Insert teroverload untuk memampukan nilai-nilai berbagai tipe data
disisipkan pada sembarang posisi di dalam sebuah StringBuilder. Kelas ini menyediakan beberapa versi untuk tiap tipe
data primitif dan untuk array karakter, String,
dan Object. Setiap metode mengambil
argumen keduanya, mengkonversinya menjadi sebuah String, dan menyisipkan String
tersebut di dalam StringBuilder di
depan indeks yang dispesifikasi oleh argumen pertama. Indeks yang dispesifikasi
oleh argumen pertama harus lebih besar dari atau sama dengan 0 dan kurang dari
panjang StringBuilder; sebaliknya,
program akan melemparkan sebuah ArgumentOutOfRangeException.
Kelas StringBuilder juga menyediakan metode Remove untuk menghapus penggalan StringBuilder. Metode Remove
mengambil dua argumen, yaitu indeks dimana penghapusan dimulai dan jumlah
karakter yang akan dihapus. Penjumlahan atas indeks awal dan jumlah karakter yang
akan dihapus harus selalu kurang dari panjang StringBuilder; jika tidak,
program akan melemparkan sebuah ArgumentOutOfRangeException.
Metode Insert dan Remove didemons-trasikan pada kode
10.14.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
' Kode 10.14:
StringBuilderInsertRemove.vb
' Demonstrasi metode
Insert dan Remove dari
' kelas StringBuilder.
Imports System.Text
Imports
System.Windows.Forms
Module
modBuilderInsertRemove
Sub
Main()
Dim
nilaiObjek As Object = "hallo"
Dim
nilaiString As String = "selamat jalan"
Dim
characterArray As Char() =
{"a"c, "b"c, "c"c, _
"d"c, "e"c,
"f"c}
Dim
nilaiBoolean As Boolean = True
Dim
nilaiKarakter As Char =
"K"c
Dim
nilaiInteger As Integer = 7
Dim
nilaiLong As Long = 10000000
Dim
nilaiSingle As Single = 2.5
Dim
nilaiDoble As Double = 33.333
Dim
buffer As StringBuilder = New StringBuilder()
Dim
keluaran As String
' menyisipkan ke dalam buffer
buffer.Insert(0, nilaiObjek)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiString)
buffer.Insert(0, " ")
buffer.Insert(0, characterArray)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiBoolean)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiKarakter)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiInteger)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiLong)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiSingle)
buffer.Insert(0, " ")
buffer.Insert(0, nilaiDoble)
buffer.Insert(0, " ")
keluaran = "buffer setelah Inserts:" & vbCrLf & _
buffer.ToString() & vbCrLf &
vbCrLf
buffer.Remove(10, 1) ' menghapus 5 di
dalam 2.5
buffer.Remove(2, 4) ' menghapus .333
di dalam 33.333
keluaran &= "buffer setelah Removes:" &
vbCrLf & _
buffer.ToString()
MessageBox.Show(keluaran, "Demonstrasi Metode " & _
"Insert dan Remove", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End
Sub ' Main
End Module '
modBuilderInsertRemove
|
Gambar 10.14 Keluaran
program pada kode 10.14
Metode lain yang berguna adalah Replace. Metode Replace mencari String
atau karakter tertentu dan menggantinya dengan String atau karakter lain. Kode 10.15 mendemonstrasikan metode ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
' Kode 10.15: StringBuilderReplace.vb
' Demonstrasi metode Replace.
Imports System.Text
Imports System.Windows.Forms
Module modBuilderReplace
Sub Main()
Dim builder1 As
StringBuilder = _
New StringBuilder("Selamat
Ulang Tahun Vivian")
Dim builder2 As StringBuilder = _
New StringBuilder("selamat
jalan sihol")
Dim output As String =
"Sebelum Replace:" &
vbCrLf & _
builder1.ToString() &
vbCrLf & builder2.ToString()
builder1.Replace("Vivian", "Sihol")
builder2.Replace("s"c,
"S"c, 0, 5)
output &= vbCrLf &
vbCrLf & "Setelah Replace:"
& _
vbCrLf &
builder1.ToString() & vbCrLf & _
builder2.ToString()
MessageBox.Show(output, _
"Menggunakan Metode Replace Kelas StringBuilder", _
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modBuilderReplace
|
Gambar 10.15 Keluaran
program pada kode 10.15
Baris 19 menggunakan metode Replace untuk menggantikan String “Vivian” dengan String “Sihol” di dalam builder1. Versi teroverload lain dari metode ini mengambil dua
karakter dua karakter sebagai parameter dan menggantikan semua karakter pada
parameter pertama dengan karakter pada parameter kedua. Baris 20 menggunakan
sebuah Replace teroverload yang
mengambil empat parameter, dimana dua parameter pertama adalah karakter dan dua
parameter kedua adalah Integer.
Metode ini mengganti semua karakter pertama dengan karakter kedua, diawali dari
indeks yang dispesifikasi oleh Integer
pertama dan berlanjut sampai sejumlah karakter selanjutnya yang dispesifikasi
oleh Integer kedua.
Struktur
Char
Visual Basic menyediakan blok pembangun
program, dikenal dengan struktur, yang sama dengan kelas. Seperti kelas,
struktur memuat metode dan properti. Baik kelas maupun struktur menggunakan
pemodifikasi yang sama (seperti Public,
Private, dan Protected) dan pengaksesan anggota dilakukan menggunakan operator
dot (.). Namun, kelas diciptakan menggunakan katakunci Class, sedangkan struktur diciptakan menggunakan katakunci Structure. Saat ini, akan disajikan
struktur Char, yang merupakan
struktur untuk karakter.
Kebanyakan metode struktur Char adalah Shared, yang mengambil sedikitnya satu argumen karakter dan yang
melakukan pengujian atau pemanipulasian karakter. Kode 10.16 mendemons-trasikan
beberapa metode Shared yang menguji
karakter untuk menentukan apa tipe karakter tersebut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
' Kode 10.16:
MetodeChar.vb
' Demonstrasi pengujian
karakter menggunakan metode-metode
' Shared dari struktur
Char
Public Class
FrmKarakter
Inherits
Form
Friend
WithEvents lblEnter As Label '
meminta masukan
Friend WithEvents txtMasukan As
TextBox ' membaca sebuah Char
Friend
WithEvents txtKeluaran As
TextBox ' menampilkan hasil
' membaca dan menampilkan informasi
tentang masukan
Friend
WithEvents cmdAnalisa As
Button
' kode yang dibangkitkan oleh Visual
Studio .NET
' menangani event klik cmdAnalisa
Private
Sub cmdAnalisa_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdAnalisa.Click
Dim
karakter As Char =
Convert.ToChar(txtMasukan.Text)
BangunKeluaran(karakter)
End
Sub ' cmdAnalisa_Click
' menampilkan informasi karakter di dalam
txtKeluaran
Public
Sub BangunKeluaran(ByVal
karakterMasukan As Char)
Dim
keluaran As String
keluaran = "apakah dijit: " & _
Char.IsDigit(karakterMasukan)
& vbCrLf
keluaran &= "apakah huruf:
" & _
Char.IsLetter(karakterMasukan)
& vbCrLf
keluaran &= "apakah huruf atau dijit: " &
_
Char.IsLetterOrDigit(karakterMasukan)
& vbCrLf
keluaran &= "apakah huruf kecil: " & _
Char.IsLower(karakterMasukan)
& vbCrLf
keluaran &= "apakah huruf besar: " & _
Char.IsUpper(karakterMasukan)
& vbCrLf
keluaran &= "menjadi huruf
besar: " & _
Char.ToUpper(karakterMasukan)
& vbCrLf
keluaran &= "menjadi huruf kecil: " & _
Char.ToLower(karakterMasukan)
& vbCrLf
keluaran &= "apakah tanda baca: " & _
Char.IsPunctuation(karakterMasukan)
& vbCrLf
keluaran &= "apakah simbol: " & Char.IsSymbol(karakterMasukan)
txtKeluaran.Text = keluaran
End
Sub ' BangunKeluaran
End Class
|
Gambar 10.16 Keluaran
program pada kode 10.16
Aplikasi Windows memuat sebuah prompt,
yaitu sebuah TextBox, untuk meminta
pengguna memasukkan sebuah karakter, sebuah tombol yang dapat ditekan pengguna
setelah memasukkan karakter, dan sebuah TextBox
kedua yang menampilkan hasil analisa. Ketika pengguna mengklik tombol Analisa Karakter, event handler cmdAnalisa_Click
(baris 19-25) dipanggil. Metode ini mengkonversi data yang dimasukkan dari
sebuah String menjadi sebuah Char menggunakan metode Convert.ToChar (baris 22). Pada baris 24, metode BangunKeluaran dipanggil, yang didefinisikan pada baris 28-58.
Baris 32 menggunakan metode IsDigit untuk menentukan apakah
karakter karakterMasukan
didefinisikan sebagai sebuah dijit. Jika ya, metode ini akan menghasilkan True; sebaliknya, ia menghasilkan False.
Baris 35 menggunakan metode IsLetter untuk menentukan apakah
karakter karakterMasukan adalah
sebuah huruf atau bukan. Jika ya, metode ini menghasilkan True; sebaliknya, ia menghasilkan False. Baris 38 menggunakan metode IsLetterOrDigit untuk menentukan apakah karakter karakterMasukan adalah sebuah huruf
atau sebuah dijit. Jika ya, metode ini menghasilkan True; sebaliknya, ia menghasilkan False.
Baris 41 menggunakan metode IsLower untuk menentukan apakah
karakter karakterMasukan adalah
sebuah huruf kecil atau tidak. Jika ya, metode ini menghasilkan True; sebaliknya, ia menghasilkan False. Baris 44 menggunakan metode IsUpper untuk menentukan apakah
karakter karakterMasukan adalah
sebuah huruf besar atau tidak. Jika ya, metode ini menghasilkan True; sebaliknya, ia menghasilkan False. Baris 47 menggunakan metode ToUpper untuk mengkonversi karakter karakterMasukan menjadi huruf besar
ekivalennya. Metode ini menghasilkan karakter terkonversi jika karakter
tersebut memiliki huruf besar ekivalen; sebaliknya, metode ini menghasilkan
argumen asli. Baris 50 menggunakan metode ToLower
untuk untuk mengkonversi karakter karakterMasukan
menjadi huruf kecil ekivalennya. Metode ini menghasilkan karakter terkonversi
jika karakter tersebut memiliki huruf kecil ekivalen; sebaliknya, metode ini
menghasilkan argumen asli.
Baris 53 menggunakan metode IsPunctuation untuk menentukan apakah
karakter karakterMasukan adalah
sebuah tanda baca atau tidak. Jika ya, metode menghasilkan True; sebaliknya, ia menghasilkan False. Baris 55 menggunakan metode IsSymbol untuk menentukan apakah karakter karakterMasukan adalah sebuah simbol atau tidak. Jika ya, metode
menghasilkan True; sebaliknya, ia
menghasilkan False.
Simulasi
Pengacakan Kartu
Sekarang, akan dibangkitkan bilangan
acak untuk mengembangkan sebuah program yang mensimulasikan pengacakan kartu.
Setelah diciptakan, program ini dapat diimplementasikan di dalam
program-program yang mirip dengan permainan kartu yang lain.
Aplikasi TumpukanKartu (kode 10.18) akan dikembangkan, yang menciptakan
setumpukan 52 kartu menggunakan objek CKartu.
Pengguna dapat membagikan kartu dengan mengklik tombol Bagikan Kartu. Setiap kartu yang dibagikan ditampilkan di dalam
sebuah Label. Pengguna juga dapat
mengacak tumpukan kartu dengan mengklik tombol Acak Kartu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
' Kode 10.17: Card.vb
' Menyimpan informasi tentang jenis dan muka setiap kartu.
Public Class CKartu
Private muka As String
Private jenis As String
Public Sub New(ByVal
nilaiMuka As String, _
ByVal nilaiJenis As String)
muka = nilaiMuka
jenis = nilaiJenis
End Sub ' New
Public Overrides Function ToString() As String
Return muka & " dari
" & jenis
End Function ' ToString
End Class ' CKartu
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
' Kode 10.18:
TumpukanKartu.vb
' Pengacakan dan pembagian
kartu.
Public Class
FrmKartu
Inherits
Form
Friend
WithEvents lblTampil As Label
' menampilkan kartu yang dibagi
Friend
WithEvents lblStatus As Label
' nomor kartu yang dibagi
Friend
WithEvents cmdBagikan As
Button ' membagikan satu kartu
Friend
WithEvents cmdAcak As Button '
mengacak kartu
' kode yang dibangkitkan oleh Visual
Studio .NET
Private
kartuSekarang As Integer
Private
objekAcak As Random = New Random()
Private
tumpukan As CKartu() = New CKartu(51) {}
' handles form at load time
Public
Sub FrmKartu_Load(ByVal sender
As System.Object, _
ByVal
e As System.EventArgs) Handles
MyBase.Load
Dim
muka As String() = {"Ace", "Deuce", "Three",
_
"Four", "Five",
"Six", "Seven", "Eight", "Nine", _
"Ten", "Jack",
"Queen", "King"}
Dim
jenis As String() = {"Hearts",
"Diamonds", "Clubs", _
"Spades"}
Dim
i As Integer
' tidak ada kartu yang dibagikan
kartuSekarang = -1
' inisialisasi tumpukan
For
i = 0 To tumpukan.GetUpperBound(0)
tumpukan(i) = New CKartu(muka(i Mod 13), jenis(i
Mod 4))
Next
End
Sub ' FrmKartu_Load
' menangani cmdBagikan_Click
Private
Sub cmdBagikan_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdBagikan.Click
Dim
bagikan As CKartu = BagikanKartu()
' jika kartu yang dibagikan Null,
maka tidak ada kartu lagi
' pengguna harus mengacak kartu
If
Not (bagikan Is Nothing) Then
lblTampil.Text =
bagikan.ToString()
lblStatus.Text = "Kartu #: " & kartuSekarang
Else
lblTampil.Text = "TIDAK ADA KARTU LAGI UNTUK DIBAGIKAN"
lblStatus.Text = "Acak kartu untuk melanjutkan"
End
If
End
Sub ' cmdBagikan_Click
‘ mengacak kartu
Public Sub Acak()
Dim
i As Integer
Dim
j As Integer
Dim
nilaiSementara As CKartu
kartuSekarang = -1
' menukar setiap kartu dengan kartu
acak
For
i = 0 To tumpukan.GetUpperBound(0)
j = objekAcak.Next(52)
' menukar kartu
nilaiSementara = tumpukan(i)
tumpukan(i) = tumpukan(j)
tumpukan(j) = nilaiSementara
Next
cmdBagikan.Enabled = True
End
Sub ' Acak
Public
Function BagikanKartu() As CKartu
' jika masih ada kartu, maka bagikan
kepada pemain
' sebaliknya beritahu bahwa kartu
perlu diacak
' dengan menon-aktifkan cmdBagi dan
menghasilkan Nothing
If
(kartuSekarang + 1) < tumpukan.GetUpperBound(0) Then
kartuSekarang += 1
Return tumpukan(kartuSekarang)
Else
cmdBagikan.Enabled = False
Return Nothing
End
If
End
Function ' BagikanKartu
' menangani cmdAcak_Click
Private
Sub cmdAcak_Click(ByVal sender
As System.Object, _
ByVal
e As System.EventArgs) Handles cmdAcak.Click
lblTampil.Text = "MENGACAK..."
Acak()
lblTampil.Text = "TUMPUKAN DIACAK"
End Sub ' cmdAcak_Click
End Class
|
Gambar 10.17 Keluaran
program pada kode 10.18
Kelas CKartu (kode 10.17) memuat dua variabel instans String, yaitu muka dan jenis, yang
menyimpan referensi yang menunjuk ke nama muka dan nama jenis dari kartu
tertentu. Konstruktor untuk kelas ini menerima dua String yang dipakai untuk
menginisialisasi muka dan jenis. Metode ToString menciptakan sebuah String
yang memuat muka kartu dan jenis kartu.
Metode FrmTumpukan_Load (baris 20-40 pada kode 10.18) menggunakan struktur
For (baris 36-38) untuk mengisi
array tumpukan dengan CKartu.
Perhatikan bahwa setiap CKartu
diinstansiasi dan diinisialisasi dengan dua String, yaitu satu dari array muka
(String “Ace” sampai “King”) dan
satu lagi dari array jenis (“Hearts”, “Diamonds”, “Clubs”, atau
“Spades”). Kalkulasi pada i Mod 13 selalu menghasilkan sebuah
nilai dari 0 sampai 12 (tiga belas subskript pada array muka), dan kalkulasi pada i
Mod 4 selalu menghasilkan sebuah nilai dari 0 sampai 3 (empat subskript
pada array jenis).
Ketika pengguna mengklik tombol Bagikan Kartu, event handler cmdBagikan_Click
(baris 43) memanggil metode BagikanKartu
(yang didefinisikan pada baris 81-96) untuk mendapatkan kartu selanjutnya di
dalam array tumpukan. Jika tumpukan
tidak kosong, maka metode ini menghasilkan sebuah referensi objek CKartu; sebaliknya, ia menghasilkan Nothing. Jika referensi tidak Nothing, baris 51-52 akan menampilkan CKartu pada lblTampil dan menampilkan nomor kartu pada lblStatus.
Jika BagikanKartu menghasilkan referensi Nothing, maka String “TIDAK ADA KARTU LAGUNTUK DIBAGIKAN”
akan ditampilan pada lblTampil, dan String “Acak kartu untuk melanjutkan” akan ditampilkan pada lblStatus.
Ketika pengguna mengklik tombol Acak Kartu, metode event handler cmdAcak_Click (baris
99-107) akan memanggil metode Acak
(didefinisikan pada baris 61) untuk mengacak kartu. Metode ini kemudian
menjelajah menggunakan loop melalui semua 52 kartu (array dengan subskript
0-51). Kemudian objek CKartu terkini
dan objek CKartu yang dipilih secara
acak akan ditukar di dalam array. Ketika pengacakan selesai, lblTampil menampilkan String “TUMPUKAN DIACAK”.
Ekspresi
Reguler dan Kelas Regex
Ekspresi reguler umumnya adalah String terformat yang dipakai untuk
mencari pola dalam teks dan berguna untuk validasi informasi, untuk memastikan
bahw data dalam format tertentu. Sebagai contoh, kode pos harus memuat lima
dijit (misalnya), dan nama akhir harus diawali dengan huruf besar (misalnya).
Salah satu aplikasi dari ekspresi reguler adalah untuk memfasilitasi konstruksi
sebuah kompiler. Seringkali, ekspresi reguler yang kompleks dipakai untuk
memvalidasi sintaks sebuah program. Jika kode program tidak cocok dengan
ekspresi reguler, maka kompiler akan mengetahui bahwa terjadi error sintaks
pada kode tersebut.
Framework .NET menyediakan kelas Regex (namespace System.Text.RegularExpressions) untuk menolong pada pengembang
mengenali dan memanipulasi ekspresi reguler. Kelas Regex menyediakan metode Match,
yang menghasilkan sebuah objek kelas Match
yang merepresentasikan ekspresi reguler yang cocok. Regex juga menyediakan metode Matches,
yang menemukan semua kecocokan dari sebuah ekspresi reguler dalam String dan menghasilkan sebuah objek MatchCollection.
Tabel pada Gambar 10.18 menspesifikasi
beberapa grup karakter yang dapat dipakai dengan ekspresi reguler. Grup
karakter merupakan sebuah runtun escape
yang merepresentasikan sekelompok karakter.
Karakter word adalah sembarang karakter alfanumerik atau karakter
garis-bawah. Karakter spasi-putih adalah sebuah spasi, tab, carriage return, atau garis-baru. Dijit
adalah sembarang karakter numerik. Ekspresi numerik tidak dibatasi pada
grup-grup karakter tersebut. Ekspresi reguler dapat menggunakan berbagai
operator dan format notasi dalam mencari pola yang kompleks. Beberapa teknik
pencarian pola dalam teks akan disajikan pada contoh selanjutnya.
Kode 10.19 menyajikan sebuah contoh
sederhana yang menggunakan ekspresi reguler. Program ini mengambil
tanggal-lahir dan mencoba untuk mencocokkannya dengan ekspresi reguler.
Karakter
|
Cocok dengan
|
Karakter
|
Cocok dengan
|
\d
\w
\s
|
sembarang dijit
sembarang
karakter word
sembarang spasi
putih
|
\D
\W
\S
|
sembarang
tak-dijit
sembarang
karakter tak -word
sembarang tak
-spasi-putih
|
Gambar 10.18 Grup-grup
karakter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
' Kode 10.19: RegexCocok.vb
' Demonstrasi kelas Regex.
Imports
System.Text.RegularExpressions
Imports System.Windows.Forms
Module modRegexCocok
Sub Main()
Dim keluaran As String = ""
Dim cocokKu As Match
' menciptakan ekspresi
reguler
Dim ekspresi As Regex
= _
New Regex("U.*\d[0-35-9]-\d\d-\d\d")
Dim string1 As String
= "Ultah Vivian adalah 05-12-75"
& _
vbCrLf & "Tanggal lahir Sihol adalah 11-04-68"
& vbCrLf & _
"Tanggal lahir Rotua adalah 04-28-73"
& vbCrLf & _
"Ultah Rico adalah 12-17-77"
' mencocokkan ekspresi
reguler dengan string dan
' menampilkan semua
kecocokan
For Each cocokKu In
ekspresi.Matches(string1)
keluaran &=
cocokKu.ToString() & vbCrLf
Next
MessageBox.Show(keluaran,
"Menggunakan Kelas Regex",
_
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End Sub ' Main
End Module ' modRegexCocok
|
Gambar 10.19 Keluaran
program pada kode 10.19
Baris 15 menciptakan sebuah instans
kelas Regex dan mendefinisikan pola
ekspresi reguler yang akan dicari Regex.
Karakter pertama dalam ekspresi reguler, “U”,
diperlakukan sebagai karakter literal. Ini berarti bahwa sembarang String yang cocok dengan ekspresi
reguler ini harus diawali dengan “U”.
Dalam sebuah ekspresi reguler, karakter
dor “.” menyatakan kecocokan dengan
sembarang karakter tunggal kecuali sebuah karakter garis-baru. Namun, ketika
karakter dot diikuti dengan sebuah asterisk, seperti dalam ekspresi “.*”, artinya ia cocok dengan sembarang
karakter (yang tidak ditentukan).
Seperti dicantumkan pada Gambar 10.18,
“\d” memiliki kecocokan dengan
sembarang dijit. Untuk menspesifikasi rentang karakter atau nilai, digunakan
kurung siku, [ ]. Sebagai contoh, pola “[aiueo]”
dapat dipakai untuk mencocokkan sembarang vokal. Rentang karakter dapat
direpresentasikan dengan sebuah garis-hubung (-) di antara dua karakter. Dalam contoh, pola cocok dengan
sembarang dijit di antara 0 dan 3 atau antara 5 dan 9; oleh karena
itu, ia cocok dengan sembarang dijit kecuali 4. Jika karakter pertama di dalam
kurung siku adalah “^”, maka
ekspresi akan menerima sembarang karakter selain yang diindikasikan.
Baris 24-26 menggunakan sebuah loop For Each untuk beriterasi melalui
setiap Match yang didapatkan dari ekspresi.Matches, yang menggunakan string1 sebagai argumen. Keluaran pada
Gambar 10.19 mengindikasikan dua kecocokan yang ditemukan di dalam string1. Perhatikan bahwa kedua
kecocokan sesuai dengan pola yang dispesifikasi oleh ekspresi reguler.
Gambar 10.20 mencantumkan beberapa
kuantifator dan kegunaannya di dalam ekspresi reguler.
Kuantifator
|
Cocok dengan
|
*
+
?
{n}
{n,}
{n,m}
|
cocok dengan
nol atau lebih kemunculan pola.
cocok dengan
satu atau lebih kemunculan pola.
cocok dengan
nol atau satu kemunculan pola.
cocok dengan n
kemunculan pola.
cocok dengan
sedikitnya n kemunculan pola.
cocok dengan
antara n dan m kemunculan pola.
|
Gambar 10.20 Beberapa kuantifator
yang digunakan dalam ekspresi reguler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
' Kode 10.20: Validasi.vb
' Validasi informasi
pengguna menggunakan ekspresi reguler.
Imports
System.Text.RegularExpressions
Public Class
FrmValid
Inherits
Form
' bidang label
Friend
WithEvents lblAkhir As Label
Friend
WithEvents lblPertama As Label
Friend
WithEvents lblAlamat As Label
Friend
WithEvents lblKota As Label
Friend
WithEvents lblPropinsi As
Label
Friend
WithEvents lblPost As Label
Friend
WithEvents lblTelp As Label
' bidang masukan
Friend
WithEvents txtAkhir As TextBox
Friend
WithEvents txtPertama As
TextBox
Friend
WithEvents txtAlamat As
TextBox
Friend
WithEvents txtKota As TextBox
Friend
WithEvents txtPropinsi As
TextBox
Friend WithEvents txtPost As
TextBox
Friend
WithEvents txtTelp As TextBox
Friend
WithEvents cmdOK As Button '
memvalidasi semua bidang
' kode yang dibangkitkan oleh Visual
Studio .NET
' menangani event cmdOK Click
Private
Sub cmdOK_Click(ByVal sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdOK.Click
' memastikan tidak ada kotak-teks
yang kosong
If
(txtTelp.Text = "" OrElse
txtPost.Text = "" OrElse
_
txtPropinsi.Text = "" OrElse txtKota.Text = "" OrElse _
txtAlamat.Text = "" OrElse txtPertama.Text = ""
OrElse _
txtAkhir.Text = "") Then
' menampilkan kotak teks
MessageBox.Show("Silahkan isi semua bidang",
"Error", _
MessageBoxButtons.OK,
MessageBoxIcon.Error)
' menetapkan fokus pada txtAkhir
txtAkhir.Focus()
Return
End
If
' jika nama format nama akhir
tak-valid
If
Not Regex.Match(txtAkhir.Text, _
"^[A-Z][a-zA-Z]*$").Success Then
' nama akhir tak-valid
MessageBox.Show("Nama Akhir Tak-Valid", "Pesan")
txtAkhir.Focus()
Return
End
If
' jika format nama pertama tak-valid
If
Not Regex.Match(txtPertama.Text, _
"^[A-Z][a-zA-Z]*$").Success Then
' nama pertama tak-valid
MessageBox.Show("Nama Pertama Tak-Valid", "Pesan")
txtPertama.Focus()
Return
End
If
' jika format alamat tak-valid
If
Not Regex.Match(txtAlamat.Text, "^[0-9]+\s+([a-zA-Z]" & _
"+|[a-zA-Z]+\s[a-zA-Z]+)$").Success Then
' alamat tak-valid
MessageBox.Show("Alamat Tak-Valid", "Pesan")
txtAlamat.Focus()
Return
End
If
' jika format kota tak-valid
If
Not Regex.Match(txtKota.Text, "^([a-zA-Z]+|[a-zA-Z]"
& _
"+\s[a-zA-Z]+)$").Success Then
' kota tak-valid
MessageBox.Show("Kota Tak-Valid", "Pesan")
txtKota.Focus()
Return
End
If
' jika format propinsi tak-valid
If
Not Regex.Match(txtPropinsi.Text, _
"^([a-zA-Z]+|[a-zA-Z]+\s[a-zA-Z]+)$").Success Then
' propinsi tak-valid
MessageBox.Show("Propinsi Tak-Valid", "Pesan")
txtPropinsi.Focus()
Return
End
If
' jika format kode pos tak-valid
If
Not Regex.Match(txtPost.Text, "^\d{5}$").Success
Then
' kode pos tak-valid
MessageBox.Show("Kode Pos Tak-Valid", "Pesan")
txtPost.Focus()
Return
End
If
' jika format no telp tak-valid
If
Not Regex.Match(txtTelp.Text, "^[1-9]"
& _
"\d{2}-[1-9]\d{2}-\d{4}$").Success Then
' telepon tak-valid
MessageBox.Show("Nomor Telepon Tak-Valid", "Pesan")
txtTelp.Focus()
Return
End
If
' informasi valid, beritahu pengguna
dan keluar aplikasi
Me.Hide()
MessageBox.Show("Terima-Kasih", "Informasi Benar", _
MessageBoxButtons.OK,
MessageBoxIcon.Information)
Application.Exit()
End
Sub ' cmdOK_Click
End Class
|
Gambar 10.21 Keluaran
program pada kode 10.20
Latihan
1.
Tulislah sebuah aplikasi yang menggunakan metode CompareTo untuk membandingkan dua String masukan oleh pengguna. Tampilkan
apakah String pertama kurang dari,
sama dengan, atau lebih dari String
kedua.
2.
Tulislah sebuah aplikasi yang menggunakan
pembangkitan bilangan-acak untuk menciptakan kalimat. Gunakan empat array String, yang dinamakan ketWaktu, kata-Benda, kataKerja,
dan ketTempat. Ciptakan sebuah
kalimat dengan memilih kata secara acak dari tiap array dengan urutan berikut: ketWaktu, kataBenda, kataKerja, ketTempat. Setelah tiap kata dipilih,
kemudian semuanya disambung menjadi kalimat. Antar kata harus dipisahkan dengan
koma. Ketika kalimat ditampilkan, ia harus dimulai dengan huruf besar dan
diakhiri dengan sebuah titik. Program harus membangkitkan 20 kalimat dan
menampilkannya di dalam TextBox.
Keempat array
harus diisi sebagai berikut: array ketWaktu
harus memuat “semalam”, “tadi pagi”, “nanti malam”, “bulan depan”,
dan “besok”; array kataBenda harus
memuat “wanita itu”, “pria ganteng berbaju merah”, “dosen galak ini”, “anak kecil”, dan “pria paru
baya”; array kataKerja harus
memuat “belajar”, “berlari”, “berjalan”, “melompat”,
dan “menangis”; array ketTempat harus memuat “di rumah”, “di jalan”, “di warung”,
“di hotel”, dan “di bioskop”.
kurang kecil teks nya.. sakit mata gw lihat nya.. copz
ReplyDelete