ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ươ
Ch
ng 2
ử
ả
ỗ X lý m ng và chu i
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ộ
N i dung vM ngả vCác thao tác trên m ngả vChu iỗ vCác thao tác trên chu iỗ
ố
ệ
ố Khoa H Th ng Thông Tin
ầ ử
ề
ậ
ợ
ể
M ngả vLà t p h p nhi u ph n t
ữ có cùng ki u d
ả
trong m ng đ
ướ c ắ ầ
ượ ố
ầ ử ượ
ị c xác đ nh tr ỉ ụ c đánh s ch m c, b t đ u
đ
li uệ vS ph n t ầ ử ố vM i ph n t ỗ 0ừ
t
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
M ngả
ỉ ụ ủ
ủ ứ ộ M t phòng ch a các t ủ ứ ố ượ ch a ? ng t v S l ứ ủ v T Ch a gì? ố ứ ự ủ v S th t
t
, ch m c t
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
M ngả
ụ ề ả Ví d v m ng:
ả
ừ
M ng các t
:
Khoa
Hệ
Th ngố
Thông
Tin
0
3
4
1
2
ả
ố
M ng các s nguyên:
6
1
4
0
1
2
8
9
2
4
0
1
3
5
6
7
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
ể ữ ệ [] tênM ng;ả
Khai báo M ngả vKi uD Li u vVí dụ
§ int[] bangDiem; § string[] loiNoi; § DateTime[] ngaySinh;
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ả
ở ạ
Kh i t o M ng vtenMang = new KieuDuLieu[soPhanTu] vVí dụ
§ diem = new int[10]; § loiNoi = new string[20]; § ngaySinh = new DateTime[7]; § float diemTB = new float[5];
0
0
0
0
0
0
1
2
3
4
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ở ạ
ị ả
Kh i t o và gán giá tr M ng vtenMang = new KieuDuLieu[spt]{gtri1, gtri2,
gtri3,…}; § diem = new int[5]{ 5, 6, 7, 6, 9 }
ấ
ế
ả
ằ
ố
vGiá tr không nh t thi
t ph i là h ng s
ị § Ví dụ Random r = new Random(); int[] pins = new int[4]{
r.Next() % 10, r.Next() % 10, r.Next() % 10, r.Next() % 10 };
ả ằ
vS giá tr trong d u ngo c ph i b ng s ố
ấ ượ
ố ầ ử ả ph n t
ị m ng đ
ặ c khai báo
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ầ ử ả
M ng
ố
ị
ầ ử ủ
ả
c a m ng
ầ ử
ấ ừ Truy su t t ng ph n t vXác đ nh s ph n t § tenMang.Length vTruy xu t ph n t ấ
: tenMang[soThuTu]
§ 0 <= soThuTu <= (tenMang.Length – 1)
vVí dụ ấ
ứ
ủ
ả
diem
§ L y đi m th 3 (soThuTu = 2) c a m ng ể int diem3 = diem[2]; diem3 = 7
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ị
ầ ử ả
ừ
M ng ả
Gán giá tr cho t ng ph n t vGán đi m th 3 c a m ng diem là 10 ủ
ứ ể § diem[2] = 10
5
6
10
6
9
0
3
1
4
ủ
ứ
ể
ả
ằ
2 vGán đi m th 4 c a m ng diem b ng đi m
ể ứ ấ ộ th nh t c ng 4 § diem[3] = diem[0] + 4
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ả
ệ
ặ
ụ
ả
Duy t M ng vDùng vòng l p for vVí d duy t m ng diem ệ for (int i = 0; i < diem.Length; i++) {
Console.WriteLine(diem[i].ToString());
ệ
ầ ử
} vDuy t và gán ph n t for (int i = 0; i < diem.Length; i++) {
diem[i] += 1;
Console.WriteLine(diem[i].ToString());
}
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ằ
ệ ả Duy t M ng b ng foreach vVí dụ foreach (int i in diem) {
Console.WriteLine(i.ToString());
} vKhông nên dùng foreach khi
ệ ừ
ụ
ầ
ả
§ C n duy t m t ph n trong m ng (ví d duy t t
ả
ế
ị ủ
ầ ộ ệ ầ ử ứ ứ ớ ph n t i th 10) th 2 t § C n duy t t ầ ệ ừ ố ề ầ cu i v đ u m ng § C n bi ầ ỉ ố ả ặ t ch s m ng trong vòng l p § C n thay đ i giá tr c a ph n t ầ ử ả ổ ầ m ng
ố
ệ
ố Khoa H Th ng Thông Tin
ả
ả
Sao chép M ngả vM ng là ki u tham chi u ể
ế gán m ng là gán
tham chi uế
vVí dụ
ế
ế
§ int[] mangA = diem; § mangA và diem cùng tham chi u đ n vùng
ầ ử ủ
ả
nh ch a các ph n t
c a m ng
ẽ ả
ị
ưở
ớ ứ ổ
§ Thay đ i giá tr trong mangA s nh h
ế ng đ n
diem
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
Sao chép M ngả
diem
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
5
6
7
6
9
mangA
diem
5
6
8
6
9
mangA
ố
ệ
ố Khoa H Th ng Thông Tin
ị ừ ả
ạ
m ng cũ
Sao chép M ngả vT o m ng m i và gán giá tr t ớ ả vDùng CopyTo
§ int[] mangA = new int[diem.Length]; § diem.CopyTo(mangA, 0);
vDùng Array.Copy
§ Array.Copy(diem, mangA, diem.Length);
vDùng Clone
§ mangA = (int[]) diem.Clone();
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ả
ả
Đ o M ng
ự ́
́
ự
ử
ng th c ́ ́ ́ ư ự
̣ ̣
̉ ơ Array th c hiên viêc trong mang. Cu pha p th c
ư Reverse cua l p ́ ̀ ca c phâ n t
̉ ̉
̣
ế
ươ Ph đao th t hiên: int[] mang = { 15, 26, 7, 28, 19, 6 }; Array.Reverse(mang); ả K t qu : mang = { 6,19,28,7,26,15};
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ắ ế
ả
S p x p M ng
ư Sort() cua l p ́
ng th c ́ ̀
̉ ơ Array th c hiên viêc să p ́ ự ́
ự
ử
̣ ̣
ươ Ph ́ ́ xê p ca c phâ n t
́ trong mang. Cu pha p th c hiên:
Array.Sort(ten_mang);
̉ ̣
ế
Ví d :ụ int[] mang = { 9, 5, 7, 4, 6 }; Array.Sort(mang); ả K t qu : mang = { 4, 5, 6, 7,9 };
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ế
ả
ượ ắ
ế
ả Tìm ki m trên M ng vTìm ki m trên m ng đã đ
c s p x p
0 2 5 6 7 8 9
9 8 7 6 5 2 0
ư ượ ắ
ế
ế
ả
vTìm ki m trên m ng ch a đ
c s p x p
5 2 9 7 6 0 8
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ả
ượ ắ
ư
ế ơ
ế ng th c ́
c s p x p BinarySearch cua l p ́ ̀
̉
̀
́
́
̃
ươ
ượ
̣ ̣ ̣ ̣ ̣
c să p xê p tr
̀
̉ ̉ ̉
̀
̀
ượ
̉ ̉
́ c, ́ ượ , nê u không ti m đ
́ ự
̉
̣
ả Tìm ki m trên M ng vTìm ki m trên m ng đã đ ươ Array Ph ́ ́ ự th c hiên viêc ti m kiê m môt gia tri trong môt ́ tra vê kê t qua mang đa đ ̀ ́ ́ la sô nguyên cho biê t chi sô index cua phâ n ̀ ̀ử c thi tra vê c ti m đ t ́ ́ 1. Cu pha p th c hiên:
int vitri = Array.BinarySearch(tenMang, giaTriCanTim);
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ắ ế
ả
Tìm ki m trên M ng đã s p x p vVí d :ụ
mang
0 2 5 6 7 8 9
int vitri = Array.BinarySearch(mang, 7);
ấ ố ở ị
ứ
ế
K t qu
ả vitri=4 (Tìm th y s 7
v trí th 4)
int vitri = Array.BinarySearch(mang, 113);
ấ ố
ứ
ế
K t qu
ả vitri=1 (1 t c là không tìm th y s 113)
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ư ắ ế
ắ
ả
ả
i pháp 1: ế
ị ng h p không đ ượ
ế
Không s p x p, ti n hành dùng
ế
ả Tìm ki m trên M ng ch a s p x p vVí d :ụ mang 5 2 9 7 6 0 8 vGi ế ướ ọ S p x p m ng tr c, sau đó g i ả ơ hàm tìm ki m nh phân(đ n gi n, tuy nhiên ị ổ ượ ợ ườ ế c thay đ i giá tr n u tr ả ố i pháp này) c dùng gi g c thì không đ vGi ế ắ ả i pháp 2: ế ậ ả i thu t tìm ki m tuy n tính. gi
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ư ắ ế
ế
ậ
ả
ả Tìm ki m trên M ng ch a s p x p vGi
ế i thu t tìm ki m tuy n tính
ộ
ế
ầ ự
Xét ph n t
ế
ạ ị
ữ ệ
ớ
ế
ấ
ế
ế
ị mà không có giá tr
ố ầ ử ừ ầ đ u cho đ n cu i m t cách tu n t t ị ứ i n u giá tr trong d li u đúng v i T i v trí th ế ầ khoá c n tìm ki m > tìm th y. N u không đúng tìm ầ ử ế ế i+1 k ti p đ n ph n t ầ ử ế N u sau khi xét h t N ph n t không tìm th yấ ầ khoá c n tìm
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ư ắ ế
ế i thu t tìm ki m tuy n tính
ủ
ế ắ ầ ừ ầ ử ầ ph n t
ả ướ ướ
đ u tiên c a dãy ả
ả
ừ
ầ ử ế k trong m ng ấ
ả Tìm ki m trên M ng ch a s p x p vGi ậ • B c 1: i = 0; // b t đ u t • B c 2: So sánh a[i] v i x, có 2 kh năng : ớ • + a[i] = x : Tìm th y. D ng ừ ấ • + a[i] ≠ x : Sang B c 3. ướ • B c 3 : i = i+1; // xét ti p ph n t ướ ế • N u i = N: H t m ng,không tìm th y.D ng ả ế ế • Ng ặ ạ ướ ượ ạ i B c 2. i: L p l c l
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế
ư ắ ế
ả
ậ
ế
ế i thu t tìm ki m tuy n tính
ầ ử
có khoá x
ả
Tìm ki m trên M ng ch a s p x p
vGi
int TimKiem( int x){
for (int i=0; i
ư
ế
ả
return 1;// tìm h t m ng nh ng không có x
}
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ư ắ ế
ế
ả
Tìm ki m trên M ng ch a s p x p
ố
ụ
• Ví d : Cho dãy s a
• {12, 2, 8, 5, 1, 6, 4, 15}
• Giá tr c n tìm: 8
ị ầ
• i = 0
X=8
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ư ắ ế
ế
ả
Tìm ki m trên M ng ch a s p x p
X=8
i = 1
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
i = 2
X=8
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
7 2 9
9 5 4
8 0 3
0
1
6
ỗ ợ
ả
đây ta xét m ng 2
ề ở
ấ
ề
ả
Ø C# h tr m ng đa chi u,
ổ ế
chi u vì nó ph bi n nh t.
ủ
ự
ữ
ề
ộ
ề
ề
ồ
ả
ả
ộ
ậ
ả
ấ
Ø M ng hai chi u th c ch t là m ng c a nh ng
ả
ể
m ng m t chi u. Ta có th xem m ng hai chi u là
ộ
m t ma tr n g m các hàng và các c t
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
C t 0ộ
C t 1ộ
C t 2ộ
C t 3ộ
Dòng 0
M[0, 0]
7
M[0, 1]
2
M[0, 2]
9
M[0, 3]
0
Dòng 1
M[1, 0]
9
M[1, 1]
5
M[1, 2]
4
M[1, 3]
1
Dòng 2
M[2, 0]
8
M[2, 3]
6
M[2, 1]
0
Tên m ngả
M[2, 2]
3
ỉ ố ộ
Ch s c t
ỉ ố
Ch s dòng
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
Ø Cú pháp khai báo:
̃
̉
̣ [ , ] mang =
ư
Kiêu_d _liêu
̃
ư
new Kiêu_d _liêu
[so_hang, so_cot];
ả
ạ
ộ
Ø Ví d :ụ
ề
T o m ng 2 chi u có 3 dòng 5 c t:
int[ , ] mang = new int[3, 5];
ử
̉ ̣
ử
trong mang hai chiê u, ta s
́
̀
̉ ̣ ̉
̀
tenMang[vi tri do ng
̀
́
, vi tri côt
Ø Đê truy câp phâ n t
dung index dang
̣ ].
̣ ̣ ̣ ̣
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
int soDong = 3;
int soCot = 4;
int[,] mang = new int[soDong, soCot];
for(int i = 0; i < soDong; i++)
{
for (int j = 0; j < soCot; j++ )
{
mang[i, j] = (i +1) * j;
}
}
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
ể
ệ ằ
Ø Ngoài ra có th duy t b ng cách sau:
for (int i = 0; i < mang.GetLength(0); i++)
{
for (int j = 0; j < mang.GetLength(1); j++)
{
Console.Write(mang[i,j] +" ");
}
Console.WriteLine();
}
ố
ệ
ố
Khoa H Th ng Thông Tin
Đánh giá m ngả
Ø
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
Ư ể
ủ
ữ ệ
ớ ậ
ấ
ả
u đi m chính c a m ng:
ố
ễ ử ụ
o Truy su t nhanh, d s d ng v i t p d li u c
ự
đ nh không thay đ i trong quá trình th c thi
ị
ạ
ả
ố ị
ề
ế ủ
Ø H n ch c a m ng:
ố
o M ng có kích c và s chi u c đ nh nên khó
ụ
ế
ộ
ệ
ầ ử ượ
đ
o Các ph n t
ệ
ầ ử
ổ
ả
ỡ
ở ộ ứ
khăn trong vi c m r ng ng d ng.
ặ
c đ t và tham chi u m t cách
ớ
ộ
ế
liên ti p nhau trong b nh nên khó khăn cho vi c
ả
ỏ
ộ
ra kh i m ng.
xóa m t ph n t
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ế ủ
ử
ả
ạ
X lý H n ch c a m ng
ử ụ
ế
ể
ả
ữ ệ
ị
ự
ổ ị
ả
ổ ủ
ữ ệ
Ø S d ng collections:
List, ArrayList, Dictionary… đ thay th cho
ổ
ậ
m ng khi thao tác trên t p d li u có thay đ i trong
ổ ố ượ
ổ
ng,
quá trình th c thi (Thay đ i giá tr , thay đ i s l
ầ ử
thay đ i v trí các ph n t …)
ấ ễ ử ụ
v Các collection này r t d s d ng và có kh năng
ự
“co giãn” theo s thay đ i c a d li u trong
ự
ự
t
quá trình th c thi.
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ế ủ
ử
ạ
ả
X lý H n ch c a m ng
new
=
ds
ử
ử
ụ ử ụ
Ø Ví d s d ng List:
List
List();
ds.Add("an");//thêm ph n tầ
ds.Add("bình");
ds.Remove("an");//xóa ph n tầ
ds.Add("happy");
foreach(string s in ds)//duyệt danh
sách
{
Console.WriteLine(s);
}
ds.Clear();//xóa toàn bộ
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể
ự
ữ
System.Char
Ki u ký t
vL u tr ký t
ự
ư
Unicode 16bit
vKi u trong .NET frameword:
ể
vMi n giá tr : [0, 65535]
ị
ề
vCách khai báo
§ Khai báo ký tự
• char ch1 = 'a';
ể ừ ố
§ Chuy n t
s nguyên
• char ch2 = (char) 65; // Ký t
‘A’ự
§ Chú ý:
ử ụ
ể
ấ
ơ
• S d ng d u nháy đ n đ khai báo ki u
ể char
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể
ể ổ
ỗ ư
ể
ổ
ỉ
ự
Chuy n đ i ki u ký t
vchar.Parse(string)
vConvert.ToChar(string)
vChú ý: Chu i đ a vào chuy n đ i ch có 1 ký
t
.ự
§ char ch1 = Convert.ToChar("a"); // ch1 = ‘a’
§ char ch1 = Convert.ToChar("aa"); // báo l
iỗ
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể
ự
So sánh ki u ký t
vCompare:
ự
so sánh
, tr v hi u s gi a ký t
§ So sánh 2 ký t
ự ượ
đ
ự ả ề ệ ố ữ
c so sánh.
ớ
ự
và ký t
§ Ví d :ụ
char ch1 = 'A';
char ch2 = 'B';
Console.WriteLine(ch1.CompareTo(ch2));
§ K t qu : 1 (ký t
ỏ ơ
ả
ự ch1 nh h n 1 so v i ký t
ế
ch2)
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ự
ể
So sánh ki u ký t
vEquals
ự ằ
ự
b ng nhau
ằ
không b ng nhau
§ True: n u 2 ký t
ế
§ False: n u 2 ký t
ế
vVí dụ
ế
ế
ả
ả
char ch1 = 'A';
char ch2 = (char)65;
char ch3 = 'B';
Console.WriteLine(ch1.Equals(ch2)); //K t qu ‘True’
Console.WriteLine(ch1.Equals(ch3)); //K t qu ‘False’
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể
ự
Ki m tra ký t
vChar.IsDigit(ch): True n u ế ch là ch sữ ố
vChar.IsLetter(ch): True n u ế ch là ch cáiữ
vChar.IsNumeric(ch): True n u ế ch là ch s ữ ố
Unicode
vChar.IsWhiteSpace(ch): True n u ế ch là
ả
ắ
kho ng tr ng
vChar.IsLower(ch): True n u ế ch là ch ữ
th
ngườ
vChar.IsUpper(ch): True n u ế ch là ch hoaữ
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể
ự
Ki m tra ký t
vConsole.WriteLine(Char.IsDigit('1')); //True
vConsole.WriteLine(Char.IsDigit('½')); //False
vConsole.WriteLine(Char.IsNumber('½')); //True
vConsole.WriteLine(Char.IsNumber('2')); //True
vConsole.WriteLine(Char.IsLetter('1')); //False
vConsole.WriteLine(Char.IsLower('A')); //False
vConsole.WriteLine(Char.IsUpper('a')); //False
vConsole.WriteLine(Char.IsWhiteSpace(' ')); //True
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ớ
ự
Thao tác v i ký t
vChar.ToLower(char):
ữ ườ
ự ừ ữ
ng
ch hoa sang ch th
ữ
§ Chuy n ký t
ể
t
§ char ch1 = 'A';
§ Console.WriteLine(Char.ToLower(ch1));
§ K t qu :
ả a
ế
vChar.ToUpper(char):
ự ừ ữ ườ
ch th
t
ng sang ch hoa
§ Chuy n ký t
ể
§ char ch1 = 'a';
§ Console.WriteLine(Char.ToLower(ch1));
§ K t qu :
ế
ả A
ố
ệ
ố
Khoa H Th ng Thông Tin
ự
ộ
thu c ki u
ể char
System.String
Chu iỗ
vM ng các ký t
ả
vKi u trong .NET framework:
ể
vKhai báo chu iỗ
ệ
§ string str = "Text";
ự ặ
đ c bi
t (escape character)
"\n"
vChu i v i ký t
ỗ ớ
§ Tab: "\t"
§ Xu ng hàng:
ố
§ Backslash: "\\"
ấ
vKhai báo nguyên văn: thêm d u ‘@’
§ string str2 = @"C:\Windows";
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ể ổ
ớ ộ
ả ề
ỗ ứ
ỗ
Chuy n đ i sang Chu i
vToString(): tr v chu i ng v i n i dung
ế
ủ
c a bi n
§ int i = 1;
§ string str = i.ToString();
vConvert.ToString(obj)
§ int i = 1;
§ string str = Convert.ToString(i);
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ớ
ả ề ả
ỗ
Thao tác v i Chu i
vToCharArray() ho c ặ []: Tr v m ng các ký
ỗ
ự
trong chu i
t
string str1 = "Hello";
//Tra ve ky tu e
char ch1 = str1.ToCharArray()[1];
Console.WriteLine(ch1);
ỗ
ố
vLength: Tr v đ dài chu i (s ký t )
ự
ả ề ộ
§ string str1 = "Text";
§ int i = str1.Length; //i = 4
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
Tên hàm
Mô tả
ớ
ỗ
: So sánh chu i đang xét v i chu i
ả ề
ỏ ơ
ế ớ
ỗ ằ
ế
ơ
int
CompareTo( stri
ng value)
ỗ value. Tr v 0
ộ
N i dung
ế
n u hai chu i b ng nhau, 1 n u l n h n và 1 n u nh h n.
Ví dụ :
string s = "Hello";
ả ề
ả ề
ứ
ộ
: Tr v True n u trong chu i đang xét có ch a
ế
ế
ỗ
ượ ạ
i.
c l
bool
Contains( string
value)
ả ề
int i;
// Tr v i = 1
i = s.CompareTo("hello");
// Tr v i = 0
i = s.CompareTo("Hello");
ả ề
N i dung
ả ề
chu i ỗ value, tr v False n u ng
Ví dụ :
string s = "Hello";
bool i;
// Tr v True
i = s.Constains("lo");
ố
ệ
ố
Khoa H Th ng Thông Tin
ộ
b t đ u t
v trí
ắ ầ ạ ị
ự ắ ầ ừ ị
ự destination b t đ u t
sourceIndex
i v trí
ch là "abell"
ả ề
ộ
ế
ỗ
: Tr v True n u chu i
ỗ value là chu i con k t
ằ ở ố
ủ
ế
ỗ
cu i) c a chu i đang xét.
bool
EndsWith( string
value)
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
void CopyTo( int
: Copy count ký t
N i dung
sourceIndex, char[]
ả
ỗ
trong chu i vào m ng ký t
destination, int
destinationIndex.
destinationIndex, int
Ví dụ :
count)
string s = "hello";
char[] ch = new char[5];
ch[0] = 'a';
ch[1] = 'b';
s.CopyTo(1, ch, 2, 3);
ự
ả ề ả
// Tr v m ng ký t
Console.WriteLine(ch);
N i dung
thúc (n m
Ví dụ :
string s = "Hello";
bool b;
ả ề
// Tr v b = True
b = s.EndsWith("lo");
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
ừ
ự
ả ề
ằ
ỗ FormatStr b ng cách thay
chu i
c xây d ng t
ộ
ế
FormatStr thành các giá tr ị
ỗ ượ
ể
ng ng.
static string Format(
string format,
Object arg0, Object
arg1, Object arg2)
ị
ậ
, n,
ả
ẩ
, 200);
N i dung
: Tr v chu i đ
ị
th các v trí {:} trong
ươ ứ
value1, value2, … t
Ví dụ :
string s = "Hello";
int n;
n = 14;
ậ
// "Giá tr n = 14.00, căn b c 2 là 3.74"
ị
s = string.Format("Giá tr n = {0:N}, căn b c 2 là {1:N}"
Math.Sqrt(n));
Console.WriteLine(s);
ẩ
ả
// "Giá thành s n ph m = $200.00"
s = string.Format("Giá thành s n ph m = {0:C}"
Console.WriteLine(s);
DateTime date = new DateTime(2011, 2, 2, 1, 1, 1, 511);
// "Today is Monday, February 2, 2011"
s = string.Format("Today is {0:D}", date);
Console.WriteLine(s);
s = string.Format("{0:dd/MM/yyyy HH:mm:ss}",
DateTime.Now);
Console.WriteLine(s);
ố
ệ
ố
Khoa H Th ng Thông Tin
ộ
ế
ằ
ớ
ỗ
ỗ
ả ề
: Tr v True n u chu i đang xét b ng v i chu i
ượ ạ ả ề
i tr v False.
c l
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
bool Equals( string
N i dung
value)
value, ng
Ví dụ :
string s = "Hello";
ừ
ả ề
ớ ượ
chu i ban đ u
: Tr v chu i m i đ
ỗ
ỗ
ầ ạ ị
ỗ
ầ
startIndex chu i ỗ
ự
c xây d ng t
i v trí
string Insert( int
startIndex, string
value)
ả ề ị
ủ
ộ
ầ
ế
ỗ
ự ặ
ho c
ấ
int
IndexOf( char/string
value)
bool b;
ả ề
// Tr v b = True
b = s.Equals("Hello");
ộ
N i dung
ằ
b ng cách chèn vào chu i ban đ u t
con value.
Ví dụ :
string s = "Hello !";
string val = "everybody";
ả ề
//Tr v "Helloeverybody !"
s = s.Insert(5, val);
Console.WriteLine(s);
ệ
ấ
N i dung
: Tr v v trí xu t hi n đ u tiên c a ký t
chu i ỗ value trong chu i. Tr v 1 n u không tìm th y.
ả ề
ố
ệ
ố
Khoa H Th ng Thông Tin
ầ
ỗ
ộ
ệ
: Tr v v trí xu t hi n đ u tiên c a ký t
ủ
ả ề
ỗ ể ừ ị
ự ặ
ho c chu i
ế
startIndex. Tr v 1 n u không tìm
ấ
v trí
int
IndexOf( char/string
value, int
startIndex)
ả ề
ả ề
ươ
ự
ả ề ị
ư
ệ
ấ
ng t
: T
hàm IndexOf, nh ng tr v v trí xu t hi n
ộ
ố
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
ả ề ị
N i dung
value trong chu i k t
th y.ấ
Ví dụ :
string s = "Hello everybody !";
int i = 0;
ả ề
// Tr v i = 1
i = s.IndexOf("e");
// Tr v i = 6
i = s.IndexOf("e", i + 1);
// Tr v i = 8
i = s.IndexOf("e", i + 1);
N i dung
cu i cùng.
int
LastIndexOf( char/strin
g value)
ươ
ự
ả ề ị
ư
ệ
ấ
: T
ng t
hàm IndexOf, nh ng tr v v trí xu t hi n
ộ
ố
N i dung
cu i cùng.
int
LastIndexOf( char/strin
g value, int startIndex)
ố
ệ
ố
Khoa H Th ng Thông Tin
ỗ
c canh l
ỗ
: Tr v chu i đã đ
ỗ
ề
ớ ồ width ký t
trái. Thao tác canh
ự ặ
, đ t chu i ban
ả
ắ
ự
ớ
ỗ
ẽ
kho ng tr ng s
ỗ
ớ
ị
ố
c chen vào các v trí còn tr ng bên trái trong chu i m i.
ả ề
ở
hàm PadLeft
string PadLeft( int
width, char ch)
ươ
ự
ư
ử
trên, nh ng thay vì s
ẽ ượ ử ụ
ự ch s đ
c s d ng.
ả ề
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
ộ
ượ
ả ề
string PadLeft( int
N i dung
width)
ạ
ề ư
nh sau: t o chu i m i g m
l
ầ
ả
đ u vào bên ph i chu i m i, các ký t
ượ
đ
Ví dụ :
string s = "Hello!";
string s_leftaligned;
ỗ
// Tr v chu i " Hello!"
s_leftaligned = s.PadLeft(10);
Console.WriteLine(s_leftaligned);
ự
ộ
ng t
N i dung
: T
ắ
ả
ụ
kho ng tr ng, các ký t
d ng các ký t
Ví dụ :
string s = "Hello!";
string s_leftaligned;
ỗ
// Tr v chu i "****Hello!"
s_leftaligned = s.PadLeft(10, '*');
ố
ệ
ố
Khoa H Th ng Thông Tin
ươ
ự
ư
ề
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
ộ
string PadRight( int width) N i dung
: T
ng t
hàm PadLeft, nh ng canh l
ả
ph i.
ộ
ươ
ự
ư
ề
N i dung
: T
ng t
hàm PadLeft, nh ng canh l
ả
ph i.
ỏ
ộ
ả ề
string PadRight( int width,
char ch)
string Remove( int
startIndex, int count)
ằ
ự
c xây d ng b ng cách b đi
ự ắ ầ ừ ị
v trí
b t đ u t
ỗ ượ
ầ count ký t
: Tr v chu i đ
N i dung
ỗ
trong chu i ban đ u
startIndex.
Ví dụ :
ỗ
ỗ ượ
: Tr v chu i đ
string Replace( string
oldStr, string newStr)
ằ
c xây d ng b ng cách thay
ầ
ằ
ỗ
ự
oldStr trong chu i ban đ u b ng các
string s = "Hello!!!";
ả ề
// Tr v chu i "Hell!"
s = s.Remove(4, 3);
ả ề
ộ
N i dung
ỗ
ế
th các chu i con
ỗ
newStr.
chu i con
Ví dụ :
ả ề
ỗ
string s = "Hello";
// Tr v chu i "Hero";
s = s.Replace("ll", "r");
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
ộ
ượ ạ ớ
N i dung
: Ng
i v i hàm EndsWith
c l
ộ
ỗ
bool StartsWith(string
value)
string Substring(int startIdx,
int count)
ỗ
v trí
startIdx và có đ ộ
.ự
ả ề
: Tr v chu i con trong chu i
N i dung
ắ ầ ừ ị
ầ
ban đ u, b t đ u t
dài count ký t
Ví dụ :
string s = "Hello";
ỗ
ả ề
// Tr v chu i "ell";
s = s.Substring(1, 3);
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
string ToLower()
ữ ườ
ể
ỗ
: Tr v chu i có ki u ch th
ng
ỗ
ả ề
ộ
N i dung
ầ
ừ
t
chu i ban đ u.
string ToUpper()
ả ề
ữ
ể
ỗ
ộ
: Tr v chu i có ki u ch hoa t
ừ
ầ
N i dung
ỗ
chu i ban đ u.
string Trim()
ộ
ỏ
ố ủ
ả ề
ớ
ỗ
: Tr v chu i m i sau khi b đi
ở ầ
ắ
ả
đ u và cu i c a
kho ng tr ng
ư
ự
ươ
hàm Trim trong th
ng t
string TrimEnd()
ệ
ộ
ự
ư
ỉ ỏ
hàm Trim, nh ng ch b
ắ
ng t
ả
ở ố
N i dung
ự
các ký t
ầ
ỗ
chu i ban đ u. T
ủ
vi n hàm c a VB.Net.
: T
N i dung
ự
đi các ký t
ươ
kho ng tr ng
cu i.
string TrimStart()
ộ
ự
ư
: T
ự
ỉ ỏ
hàm Trim, nh ng ch b
ắ
ng t
ả
ở ầ
N i dung
đi các ký t
ươ
kho ng tr ng
đ u.
ố
ệ
ố
Khoa H Th ng Thông Tin
ộ
ả ề ả
ỗ
ượ
Tr v m ng các chu i con đ
c phân cách
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
ỗ
ử
Các hàm x lý Chu i
string[] Split
(params char[]
separator)
N i dung:
b i ở separator
Ví dụ :
string str = "mot,hai,ba";
ộ
ố
ả
value thành 1
ỗ
N i các chu i trong m ng
ở separator
static string Join
(string separator,
string[] value)
//Tra ve mang gom {"mot", "hai", "ba"}
string[] str2 = str.Split(',');
Console.WriteLine(str2[1]);
N i dung:
ỗ
chu i, phân cách b i
Ví dụ :
string[] mang = new string[3];
mang[0] = "mot";
mang[1] = "hai";
mang[2] = "ba";
//Tra ve chuoi "mot*hai*ba"
string str = string.Join("*", mang);
ố
ệ
ố
Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ
Đ i H c Qu c Gia TP.HCM
ậ
Đ i H c Kinh T Lu t
END
ư
ế
ả return 1;// tìm h t m ng nh ng không có x
}
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ư ắ ế
ế
ả Tìm ki m trên M ng ch a s p x p
ố
ụ
• Ví d : Cho dãy s a • {12, 2, 8, 5, 1, 6, 4, 15} • Giá tr c n tìm: 8 ị ầ • i = 0
X=8
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ư ắ ế
ế
ả Tìm ki m trên M ng ch a s p x p
X=8
i = 1
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
i = 2
X=8
12
2
8
5
1
6
4
15
0
1
2
3
4
5
6
7
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
7 2 9 9 5 4 8 0 3
0 1 6
ỗ ợ
ả
đây ta xét m ng 2
ề ở ấ
ề
ả Ø C# h tr m ng đa chi u, ổ ế chi u vì nó ph bi n nh t.
ủ
ự
ữ ề
ộ
ề ề ồ
ả ả ộ
ậ
ả ấ Ø M ng hai chi u th c ch t là m ng c a nh ng ả ể m ng m t chi u. Ta có th xem m ng hai chi u là ộ m t ma tr n g m các hàng và các c t
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
C t 0ộ
C t 1ộ
C t 2ộ
C t 3ộ
Dòng 0
M[0, 0] 7
M[0, 1] 2
M[0, 2] 9
M[0, 3] 0
Dòng 1
M[1, 0] 9
M[1, 1] 5
M[1, 2] 4
M[1, 3] 1
Dòng 2
M[2, 0] 8
M[2, 3] 6
M[2, 1] 0
Tên m ngả
M[2, 2] 3 ỉ ố ộ Ch s c t ỉ ố Ch s dòng
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
Ø Cú pháp khai báo:
̃
̉
̣ [ , ] mang = ư Kiêu_d _liêu ̃ ư new Kiêu_d _liêu
[so_hang, so_cot];
ả
ạ
ộ
Ø Ví d :ụ ề T o m ng 2 chi u có 3 dòng 5 c t: int[ , ] mang = new int[3, 5];
ử
̉ ̣
ử trong mang hai chiê u, ta s
́
̀
̉ ̣ ̉
̀ tenMang[vi tri do ng
̀ ́ , vi tri côt
Ø Đê truy câp phâ n t dung index dang
̣ ].
̣ ̣ ̣ ̣
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
int soDong = 3; int soCot = 4; int[,] mang = new int[soDong, soCot]; for(int i = 0; i < soDong; i++) { for (int j = 0; j < soCot; j++ ) { mang[i, j] = (i +1) * j; } }
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ề
ả
M ng đa chi u
ể
ệ ằ
Ø Ngoài ra có th duy t b ng cách sau: for (int i = 0; i < mang.GetLength(0); i++) { for (int j = 0; j < mang.GetLength(1); j++) {
Console.Write(mang[i,j] +" ");
} Console.WriteLine(); }
ố
ệ
ố Khoa H Th ng Thông Tin
Đánh giá m ngả
Ø
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
Ư ể
ủ
ữ ệ
ớ ậ
ấ
ả u đi m chính c a m ng: ố ễ ử ụ o Truy su t nhanh, d s d ng v i t p d li u c
ự
đ nh không thay đ i trong quá trình th c thi
ị ạ ả
ố ị
ề
ế ủ Ø H n ch c a m ng: ố o M ng có kích c và s chi u c đ nh nên khó
ụ
ế
ộ
ệ ầ ử ượ đ
o Các ph n t
ệ
ầ ử
ổ ả ỡ ở ộ ứ khăn trong vi c m r ng ng d ng. ặ c đ t và tham chi u m t cách ớ ộ ế liên ti p nhau trong b nh nên khó khăn cho vi c ả ỏ ộ ra kh i m ng. xóa m t ph n t
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế ủ
ử
ả
ạ
X lý H n ch c a m ng
ử ụ
ế
ể
ả
ữ ệ ị
ự
ổ ị
ả
ổ ủ
ữ ệ
Ø S d ng collections: List, ArrayList, Dictionary… đ thay th cho ổ ậ m ng khi thao tác trên t p d li u có thay đ i trong ổ ố ượ ổ ng, quá trình th c thi (Thay đ i giá tr , thay đ i s l ầ ử thay đ i v trí các ph n t …) ấ ễ ử ụ v Các collection này r t d s d ng và có kh năng ự “co giãn” theo s thay đ i c a d li u trong
ự
ự t quá trình th c thi.
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ế ủ
ử
ạ
ả
X lý H n ch c a m ng
new
=
ds
ử
ử
ụ ử ụ
Ø Ví d s d ng List:
List
List();
ds.Add("an");//thêm ph n tầ
ds.Add("bình");
ds.Remove("an");//xóa ph n tầ
ds.Add("happy");
foreach(string s in ds)//duyệt danh
sách
{
Console.WriteLine(s);
}
ds.Clear();//xóa toàn bộ
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể
ự
ữ
System.Char
Ki u ký t vL u tr ký t ự ư Unicode 16bit vKi u trong .NET frameword: ể vMi n giá tr : [0, 65535] ị ề vCách khai báo § Khai báo ký tự • char ch1 = 'a'; ể ừ ố
§ Chuy n t
s nguyên
• char ch2 = (char) 65; // Ký t
‘A’ự
§ Chú ý: ử ụ
ể
ấ
ơ
• S d ng d u nháy đ n đ khai báo ki u
ể char
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể
ể ổ
ỗ ư
ể
ổ
ỉ
ự Chuy n đ i ki u ký t vchar.Parse(string) vConvert.ToChar(string) vChú ý: Chu i đ a vào chuy n đ i ch có 1 ký
t
.ự § char ch1 = Convert.ToChar("a"); // ch1 = ‘a’ § char ch1 = Convert.ToChar("aa"); // báo l iỗ
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể
ự
So sánh ki u ký t vCompare:
ự
so sánh
, tr v hi u s gi a ký t
§ So sánh 2 ký t ự ượ đ
ự ả ề ệ ố ữ c so sánh.
ớ
ự
và ký t § Ví d :ụ char ch1 = 'A'; char ch2 = 'B'; Console.WriteLine(ch1.CompareTo(ch2)); § K t qu : 1 (ký t ỏ ơ ả
ự ch1 nh h n 1 so v i ký t
ế ch2)
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ự
ể So sánh ki u ký t vEquals
ự ằ ự
b ng nhau ằ không b ng nhau
§ True: n u 2 ký t ế § False: n u 2 ký t ế
vVí dụ
ế ế
ả ả
char ch1 = 'A'; char ch2 = (char)65; char ch3 = 'B'; Console.WriteLine(ch1.Equals(ch2)); //K t qu ‘True’ Console.WriteLine(ch1.Equals(ch3)); //K t qu ‘False’
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể
ự
Ki m tra ký t vChar.IsDigit(ch): True n u ế ch là ch sữ ố vChar.IsLetter(ch): True n u ế ch là ch cáiữ vChar.IsNumeric(ch): True n u ế ch là ch s ữ ố
Unicode
vChar.IsWhiteSpace(ch): True n u ế ch là
ả
ắ
kho ng tr ng
vChar.IsLower(ch): True n u ế ch là ch ữ
th
ngườ
vChar.IsUpper(ch): True n u ế ch là ch hoaữ
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể
ự
Ki m tra ký t vConsole.WriteLine(Char.IsDigit('1')); //True vConsole.WriteLine(Char.IsDigit('½')); //False vConsole.WriteLine(Char.IsNumber('½')); //True vConsole.WriteLine(Char.IsNumber('2')); //True vConsole.WriteLine(Char.IsLetter('1')); //False vConsole.WriteLine(Char.IsLower('A')); //False vConsole.WriteLine(Char.IsUpper('a')); //False vConsole.WriteLine(Char.IsWhiteSpace(' ')); //True
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ớ
ự
Thao tác v i ký t vChar.ToLower(char):
ữ ườ
ự ừ ữ
ng
ch hoa sang ch th
ữ
§ Chuy n ký t ể t § char ch1 = 'A'; § Console.WriteLine(Char.ToLower(ch1)); § K t qu : ả a ế vChar.ToUpper(char): ự ừ ữ ườ ch th
t
ng sang ch hoa
§ Chuy n ký t ể § char ch1 = 'a'; § Console.WriteLine(Char.ToLower(ch1)); § K t qu : ế
ả A
ố
ệ
ố Khoa H Th ng Thông Tin
ự
ộ
thu c ki u
ể char
System.String
Chu iỗ vM ng các ký t ả vKi u trong .NET framework: ể vKhai báo chu iỗ
ệ
§ string str = "Text"; ự ặ
đ c bi
t (escape character)
"\n"
vChu i v i ký t ỗ ớ § Tab: "\t" § Xu ng hàng: ố § Backslash: "\\"
ấ
vKhai báo nguyên văn: thêm d u ‘@’
§ string str2 = @"C:\Windows";
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ể ổ
ớ ộ
ả ề
ỗ ứ
ỗ Chuy n đ i sang Chu i vToString(): tr v chu i ng v i n i dung
ế ủ c a bi n § int i = 1; § string str = i.ToString(); vConvert.ToString(obj)
§ int i = 1; § string str = Convert.ToString(i);
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ớ
ả ề ả
ỗ Thao tác v i Chu i vToCharArray() ho c ặ []: Tr v m ng các ký
ỗ ự trong chu i t string str1 = "Hello"; //Tra ve ky tu e char ch1 = str1.ToCharArray()[1]; Console.WriteLine(ch1);
ỗ
ố
vLength: Tr v đ dài chu i (s ký t ) ự
ả ề ộ § string str1 = "Text"; § int i = str1.Length; //i = 4
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i
Tên hàm
Mô tả
ớ
ỗ
: So sánh chu i đang xét v i chu i
ả ề ỏ ơ
ế ớ
ỗ ằ
ế
ơ
int CompareTo( stri ng value)
ỗ value. Tr v 0 ộ N i dung ế n u hai chu i b ng nhau, 1 n u l n h n và 1 n u nh h n. Ví dụ :
string s = "Hello";
ả ề
ả ề
ứ
ộ
: Tr v True n u trong chu i đang xét có ch a
ế ế
ỗ ượ ạ i. c l
bool Contains( string value)
ả ề
int i; // Tr v i = 1 i = s.CompareTo("hello"); // Tr v i = 0 i = s.CompareTo("Hello"); ả ề N i dung ả ề chu i ỗ value, tr v False n u ng Ví dụ : string s = "Hello"; bool i; // Tr v True i = s.Constains("lo");
ố
ệ
ố Khoa H Th ng Thông Tin
ộ
b t đ u t
v trí
ắ ầ ạ ị
ự ắ ầ ừ ị ự destination b t đ u t
sourceIndex i v trí
ch là "abell"
ả ề
ộ
ế
ỗ
: Tr v True n u chu i
ỗ value là chu i con k t
ằ ở ố
ủ
ế ỗ cu i) c a chu i đang xét.
bool EndsWith( string value)
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i void CopyTo( int : Copy count ký t N i dung sourceIndex, char[] ả ỗ trong chu i vào m ng ký t destination, int destinationIndex. destinationIndex, int Ví dụ : count) string s = "hello"; char[] ch = new char[5]; ch[0] = 'a'; ch[1] = 'b'; s.CopyTo(1, ch, 2, 3); ự ả ề ả // Tr v m ng ký t Console.WriteLine(ch); N i dung thúc (n m Ví dụ :
string s = "Hello";
bool b;
ả ề // Tr v b = True b = s.EndsWith("lo");
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i
ừ
ự
ả ề
ằ ỗ FormatStr b ng cách thay
chu i
c xây d ng t
ộ ế
FormatStr thành các giá tr ị
ỗ ượ ể ng ng.
static string Format( string format, Object arg0, Object arg1, Object arg2)
ị
ậ
, n,
ả
ẩ
, 200);
N i dung
: Tr v chu i đ
ị
th các v trí {
s = string.Format("{0:dd/MM/yyyy HH:mm:ss}", DateTime.Now); Console.WriteLine(s);
ố
ệ
ố Khoa H Th ng Thông Tin
ộ
ế
ằ
ớ
ỗ
ỗ
ả ề : Tr v True n u chu i đang xét b ng v i chu i ượ ạ ả ề
i tr v False.
c l
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i bool Equals( string N i dung value) value, ng Ví dụ :
string s = "Hello";
ừ
ả ề
ớ ượ
chu i ban đ u
: Tr v chu i m i đ
ỗ ỗ
ầ ạ ị
ỗ ầ startIndex chu i ỗ
ự c xây d ng t i v trí
string Insert( int startIndex, string value)
ả ề ị
ủ
ộ
ầ ế
ỗ
ự ặ ho c ấ
int IndexOf( char/string value)
bool b; ả ề // Tr v b = True b = s.Equals("Hello"); ộ N i dung ằ b ng cách chèn vào chu i ban đ u t con value. Ví dụ : string s = "Hello !"; string val = "everybody"; ả ề //Tr v "Helloeverybody !" s = s.Insert(5, val); Console.WriteLine(s); ệ ấ N i dung : Tr v v trí xu t hi n đ u tiên c a ký t chu i ỗ value trong chu i. Tr v 1 n u không tìm th y. ả ề
ố
ệ
ố Khoa H Th ng Thông Tin
ầ
ỗ
ộ
ệ
: Tr v v trí xu t hi n đ u tiên c a ký t
ủ ả ề
ỗ ể ừ ị
ự ặ ho c chu i ế startIndex. Tr v 1 n u không tìm
ấ v trí
int IndexOf( char/string value, int startIndex)
ả ề
ả ề
ươ
ự
ả ề ị
ư
ệ
ấ
ng t
: T
hàm IndexOf, nh ng tr v v trí xu t hi n
ộ ố
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i ả ề ị N i dung value trong chu i k t th y.ấ Ví dụ : string s = "Hello everybody !"; int i = 0; ả ề // Tr v i = 1 i = s.IndexOf("e"); // Tr v i = 6 i = s.IndexOf("e", i + 1); // Tr v i = 8 i = s.IndexOf("e", i + 1); N i dung cu i cùng.
int LastIndexOf( char/strin g value)
ươ
ự
ả ề ị
ư
ệ
ấ
: T
ng t
hàm IndexOf, nh ng tr v v trí xu t hi n
ộ ố
N i dung cu i cùng.
int LastIndexOf( char/strin g value, int startIndex)
ố
ệ
ố Khoa H Th ng Thông Tin
ỗ
c canh l
ỗ
: Tr v chu i đã đ ỗ
ề ớ ồ width ký t
trái. Thao tác canh ự ặ , đ t chu i ban ả
ắ
ự
ớ
ỗ
ẽ kho ng tr ng s
ỗ
ớ
ị
ố c chen vào các v trí còn tr ng bên trái trong chu i m i.
ả ề
ở
hàm PadLeft
string PadLeft( int width, char ch)
ươ ự
ư ử trên, nh ng thay vì s ẽ ượ ử ụ
ự ch s đ
c s d ng.
ả ề
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i ộ ượ ả ề string PadLeft( int N i dung width) ạ ề ư nh sau: t o chu i m i g m l ầ ả đ u vào bên ph i chu i m i, các ký t ượ đ Ví dụ : string s = "Hello!"; string s_leftaligned; ỗ // Tr v chu i " Hello!" s_leftaligned = s.PadLeft(10); Console.WriteLine(s_leftaligned); ự ộ ng t N i dung : T ắ ả ụ kho ng tr ng, các ký t d ng các ký t Ví dụ : string s = "Hello!"; string s_leftaligned; ỗ // Tr v chu i "****Hello!" s_leftaligned = s.PadLeft(10, '*');
ố
ệ
ố Khoa H Th ng Thông Tin
ươ
ự
ư
ề
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i ộ string PadRight( int width) N i dung
: T
ng t
hàm PadLeft, nh ng canh l
ả ph i.
ộ
ươ
ự
ư
ề
N i dung
: T
ng t
hàm PadLeft, nh ng canh l
ả ph i.
ỏ
ộ
ả ề
string PadRight( int width, char ch) string Remove( int startIndex, int count)
ằ ự c xây d ng b ng cách b đi ự ắ ầ ừ ị v trí b t đ u t
ỗ ượ ầ count ký t
: Tr v chu i đ N i dung ỗ trong chu i ban đ u startIndex. Ví dụ :
ỗ
ỗ ượ
: Tr v chu i đ
string Replace( string oldStr, string newStr)
ằ c xây d ng b ng cách thay ầ
ằ
ỗ
ự oldStr trong chu i ban đ u b ng các
string s = "Hello!!!"; ả ề // Tr v chu i "Hell!" s = s.Remove(4, 3); ả ề ộ N i dung ỗ ế th các chu i con ỗ newStr. chu i con Ví dụ :
ả ề
ỗ
string s = "Hello"; // Tr v chu i "Hero"; s = s.Replace("ll", "r");
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i
ộ
ượ ạ ớ
N i dung
: Ng
i v i hàm EndsWith
c l
ộ
ỗ
bool StartsWith(string value) string Substring(int startIdx, int count)
ỗ v trí
startIdx và có đ ộ
.ự
ả ề : Tr v chu i con trong chu i N i dung ắ ầ ừ ị ầ ban đ u, b t đ u t dài count ký t Ví dụ :
string s = "Hello";
ỗ
ả ề // Tr v chu i "ell"; s = s.Substring(1, 3);
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i
string ToLower()
ữ ườ
ể
ỗ
: Tr v chu i có ki u ch th
ng
ỗ
ả ề ộ N i dung ầ ừ t chu i ban đ u.
string ToUpper()
ả ề
ữ
ể
ỗ
ộ
: Tr v chu i có ki u ch hoa t
ừ
ầ
N i dung ỗ chu i ban đ u.
string Trim()
ộ
ỏ ố ủ
ả ề ớ ỗ : Tr v chu i m i sau khi b đi ở ầ ắ ả đ u và cu i c a kho ng tr ng ư ự ươ hàm Trim trong th ng t
string TrimEnd()
ệ ộ
ự
ư
ỉ ỏ hàm Trim, nh ng ch b ắ
ng t ả
ở ố
N i dung ự các ký t ầ ỗ chu i ban đ u. T ủ vi n hàm c a VB.Net. : T N i dung ự đi các ký t
ươ kho ng tr ng
cu i.
string TrimStart()
ộ
ự
ư
: T ự
ỉ ỏ hàm Trim, nh ng ch b ắ
ng t ả
ở ầ
N i dung đi các ký t
ươ kho ng tr ng
đ u.
ố
ệ
ố Khoa H Th ng Thông Tin
ộ
ả ề ả
ỗ
ượ
Tr v m ng các chu i con đ
c phân cách
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t
ỗ ử Các hàm x lý Chu i string[] Split (params char[] separator)
N i dung: b i ở separator Ví dụ :
string str = "mot,hai,ba";
ộ
ố
ả
value thành 1
ỗ N i các chu i trong m ng ở separator
static string Join (string separator, string[] value)
//Tra ve mang gom {"mot", "hai", "ba"} string[] str2 = str.Split(','); Console.WriteLine(str2[1]); N i dung: ỗ chu i, phân cách b i Ví dụ : string[] mang = new string[3]; mang[0] = "mot"; mang[1] = "hai"; mang[2] = "ba"; //Tra ve chuoi "mot*hai*ba" string str = string.Join("*", mang);
ố
ệ
ố Khoa H Th ng Thông Tin
ạ ọ ế ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T Lu t