PDA

View Full Version : Thắc mắc về hàm left, right



Khanh Ngan
16-08-2003, 09:04
chào các bạn, mình đang học về net nhưng trong quá trình viết code mình không thể nào sử dụng hàm left or right để rút trích chuổi như trong vb 60
mong sự giúp đở các bạn

Allbegins
16-08-2003, 11:41
Nếu bạn chưa quen xài các hàm String mới của VB.net thì bạn có thể sử dụng hàm các hàm xử lý String của VB6 (cũ) trong VB.Net (mới):
- Left()
- Right()
- Str()
- InStr()
- Mid()

...... all for easy

=> và MSDN là nơi chỉ bạn cách sử dụng các hàm ấy

Khanh Ngan
16-08-2003, 15:09
chào bạn, nhưng mình không thể nào sử dụng được các hàm đó trong vb net
có cần phải imports không

haiboss
17-08-2003, 12:44
***273;ng r***7891;i imports vb6 vo l ch***7841;y s***7917; d***7909;ng ***273;***432;c cc hm c***7911;a vb thi .
lm nh***432; sau :
imports system.IO
imports vb6=microsoft.visualbasic

Cận
17-08-2003, 14:55
Mình nghĩ dùng SubString hay hơn chứ nhỉ:
dim s as string = "ABCABC"
MessageBox.Show(s.SubString(1,3))

Hiện ra chuỗi ABC

KEM_WALL
18-08-2003, 16:03
hic hic hic, trong class string có hàm Left() right() ... đó, chắc tại nó bỏ trong namespace sâu quá làm bạn kiếm không ra, không cần imports gì VB6 đâu

White_Rose
19-08-2003, 00:40
String class không có cái function Left(), Right() nào đâu. muốn sử dụng thì tự tạo ra mà làm. Hơn nữa lưu ý là SubString nó cũng không "mạnh" trong khống chế lỗi. Xâu có length là 2 mà dùng SubString(0,3) là error ngay.

đơn cử cái Right (Left viết tương tự <-- đơn giản hơn chút).

C#:

public string Right(string s, int len)
{
if(s.Length<=len)return s;
else
{
return s.SubString(s.Length-len, len);
}
}

VB.NET


Sub Right(s As String, len As Integer) As String
If s.Length <=len Then
return s
Else
return s.SubString(s.Length-len, len)
End If
End Sub

dtt_vn
19-08-2003, 09:47
Thế còn hàm padRight, PadLeft thì sao? Em không hiểu công dụng của hai hàm nảy, nó g hàm right và left phải không?

White_Rose
19-08-2003, 19:19
Không. Nó "làm đầy" xâu lên. Nghĩ là nếu xâu có độ dài nhỏ hơn giá trị len truyền theo hàm thì nó sẽ điền các kí tự vào bên phải hay trái để xâu có độ dài = len. Nếu xâu dài = hay lớn hơn thì không thay đổi.

Khanh Ngan
20-08-2003, 14:48
mình có một thắc mắc là nếu như mình sử dụng hàm mid thì hình như nó chỉ có 2 tham số mà thôi còn riêng về vb60 thì lại có tới 3 tham số
hơi phức tạp nhỉ
tuy nhiên theo như quyển master về vb net thì đều có hàm left, right, mid và các tham số đều giốnng như vb60 mà mình lại không thể dùng
hơi khó hiểu

White_Rose
21-08-2003, 01:07
mình có một thắc mắc là nếu như mình sử dụng hàm mid thì hình như nó chỉ có 2 tham số mà thôi còn riêng về vb60 thì lại có tới 3 tham số
hơi phức tạp nhỉ
tuy nhiên theo như quyển master về vb net thì đều có hàm left, right, mid và các tham số đều giốnng như vb60 mà mình lại không thể dùng
hơi khó hiểu
Những vấn đề như này các bạn nên tìm đọc trong SDK hay MSDN hay thậm chí là ebook có nhiều và giải thích rõ ràng.
Mid không được hỗ trợ bởi .NET. Nó là các hàm được VB.NET cover lên thôi. Mình không sử dụng VB.NẸT, chưa test nên kô thể nói chính xác được. Có điều, theo mình biết thì những hàm như này thường không thay đổi đâu.
Hoặc cũng có thể bạn phải Import namespace dành riêng cho VB60 vào.
Trong VB6, Mid có 2 cách dùng
Mid(s,start) -> lấy từ start đến cuối xâu
Mid(s, start, len) -> lấy từ start len kí tự

Nói chung thì dùng mấy cái này chỉ làm chương trình chạy chậm thêm chứ chả tiện lợi gì mấy. Những function thành viên của class String đã rất đầy đủ rồi. Sao lại không sử dụng?

dtt_vn
21-08-2003, 17:56
A, hàm Mid trong dotNet có đến 2 hàm. Vì dotNet cho phép khai báo nhiều hàm cùng tên nhưng các đối số khác nhau. Anh để ý kỹ khi cái popup help hiện lên ấy, có đến 2 pages

White_Rose
22-08-2003, 00:44
Cùng tên hàm những có nhiều cách sử dụng không được dotNET hỗ trợ mà chỉ một số language thôi. Ví dụ như VB.NET không support (những hàm như này tạo ra trong VB.NET là dùng đối số tự chọn Optional <--- không rõ nhớ đúng không :-) ). Trong mấy ngôn ngữ C++/C#... mới là thật. Đấy là kĩ thuật overload function.