SỐ 71
HỒ LÔ BIẾN

Ai VB.NET hông?
Lớp String
Chương Can Chíp

Lớp String đóng vai trò quan trọng trong hầu hết dự án VB.NET. Lớp này rất đặc biệt trong .NET, bởi vì nó là kiểu nguyên thủy chứ không phải là cấu trúc. Bảng 1 liệt kê các hành vi (method) và thuộc tính (property) của lớp String để bạn tham khảo. Các hành vi ấy được dùng chung cho mọi chuỗi. Lớp String còn chứa nhiều hành vi khác được triệu gọi dựa trên một đối tượng String cụ thể. Các hành vi thuộc lớp String thay thế các hàm liên quan đến chuỗi trong VB6.

Bảng 1: Các hành vi và thuộc tính của lớp String

Các hành vi

Mô tả

Empty

Có thể dùng trong phép so sánh hay khởi tạo một chuỗi rỗng.

Compare

So sánh hai đối tượng kiểu String.

CompareOrdinal

So sánh hai chuỗi, không xét yếu tố ngôn ngữ, văn hóa địa phương.

Concat

Nối một hay nhiều chuỗi với nhau.

Copy

Tạo một chuỗi mới có cùng trị chuỗi gốc.

Equals

Kiểm tra hai chuỗi có cùng trị hay không

Toán tử “=”

So sánh hai đối tượng String.

Toán tử khác nhau

So sánh hai đối tượng String. Trả về True nếu hai đối tượng khác nhau.

Hàm String()

Trong VB6, hàm String() cho phép tạo một chuỗi từ một ký tự với số lần lặp xác định, nay không tồn tại trong VB.NET nữa. Với lớp String, ta có nhiều cách tạo chuỗi khác nhau. Ví dụ:

Dim strHangChuoi _

As String = “ABC”

Dim strLapLai _

As String(“A”c, 20)

Bạn để ý, câu lệnh thứ hai có tác dụng giống hàm String() của VB6.

Hành vi SubString

Mặc dù không bị bỏ đi, các hàm Left, RightMid không được trọng dụng trong VB.NET. Chúng được thay bằng hành vi SubString dùng để tạo các chuỗi con. Ví dụ:

Dim strChuoi As _

String = “Xin chao”

Debug.WriteLine( _

strChuoi.SubString(0, 5))  

Debug.WriteLine( _

strChuoi.SubString(6))

Câu lệnh thứ hai lấy 5 ký tự, kể từ vị trí 0. Câu lệnh thứ ba lấy các ký tự kể từ vị trí 6 trở đi.

[Đầu trang]

Hành vi PadLeft và PadRight

Các lệnh LSetRSet bị bỏ đi và được thay bằng các hành vi PadLeftPadRight để canh chỉnh chuỗi lệch về trái hay phải (bằng cách đệm các ký tự vào sau hay trước trị chuỗi). Ví dụ:

Dim strChuoi As _

String = “Xin chao”

Debug.WriteLine( _

strChuoi.PadLeft(30))

Debug.WriteLine( _

strChuoi.PadLeft(20,”.”c))

Câu lệnh thứ hai chèn thêm 22 ký tự trắng vào bên trái chuỗi. Câu lệnh thứ ba chèn thêm 12 ký tự “.” vào bên trái chuỗi.

Như bạn thấy, lớp String trong VB.NET không hoàn toàn khác kiểu String mà dân lập trình VB đã xài bấy lâu. Phần lớn các hàm trở thành các hành vi, cách xử lý chuỗi cũng không thay đổi mấy. Có điều quan trọng bạn cần chú ý: mỗi lần thực hiện một sửa đổi với một chuỗi, bạn thu được kết quả là một đối tượng String mới và chuỗi lúc đầu trở thành … “rác”. Uổng hết sức! Đoạn mã 1 cho bạn ví dụ về cách dùng chuỗi không tốt, trong đó mỗi lần phép gán chuỗi xảy ra (1000 lần), hệ thống sẽ cấp phát một vùng đệm ký ức mới dựa trên kích thước chuỗi mới (do ghép thêm), rồi trả ký ức cũ cho hệ thống “tái chế”. Khi vòng lặp tiếp tục, việc cấp phát ký ức đòi hỏi nhiều ký ức hơn, dẫn đến mất nhiều thời gian.

Đoạn mã 1

Dim strChuoi As String

Dim intLanLap As Integer

For intLanLap = 1 To 1000

  strChuoi = strChuoi & “Mot chuoi rat dai”

Next

Debug.WriteLine(strChuoi)

Đoạn mã 2 trình bày phương án xử lý tốt hơn nhờ dùng lớp StringBuilder. Khác với lớp String, lớp StringBuilder cho phép hiệu chỉnh, bổ sung nhiều ký tự mà không đòi hỏi việc cấp phát ký ức mới cho cả chuỗi. Một khi đã dùng VB.NET, bạn nhất định phải thưởng thức món StringBuilder!

Đoạn mã 2

Dim objChuoi As New System.Text.StringBuilder()

Dim intLanLap As Integer

For intLanLap = 1 To 1000

  objChuoi.Append(“Mot chuoi rat dai”)

Next

Debug.WriteLine(objChuoi.ToString())

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn