ADMIN: nhanguyen@hcmut.edu.vn

8. Chuỗi ký tự

Chuỗi kí tự trong Matlab là mảng các giá trị mã ASSCII của ký tự muốn hiển thị

>> t='How about this charcacter string?'
>> size(t)
>> whos

Cấu trúc của chuỗi

Muốn xem mã ASCII của ký tự, dùng lệnh double:

>> u=double(t)

Hàm chuyển ngược lại từ mã ASCII thành chuỗi

>> char([77 114 32 78 104 97 126 32 110 117 109 98 101 114 32 111 110 101 33])

Với mảng các ký tự, có thể thao tác như trên một mảng thông thường:

>>u=t(16:24)
>>u=t(26:-1:16)
>>u=t(16:24)'

Để đưa vào mảng dấu nháy đơn ta sử dụng 2 dấu nháy đơn:

>>v='I can''t find the manual!'

Có thể nối 2 chuỗi với nhau:

>>w=[u,v]

Để in ra chuỗi dùng lệnh disp:

>>disp(w);

Chuyển từ số sang chữ và ngược lại

Để chuyển đổi chuỗi thành dạng số, số thành kí tự, dùng những lệnh sau

Các lệnh chuyển đổi
int2str
num2str
mat2str
sprintf
fprintf

Ví dụ:

>>int2str(eye(3))	%chuyển mảng interger sang kí tự
>>size(ans)

>>num2str(rand(2,4))	%chuyển số sang kí tự
>>size(ans)

>>mat2str(rand(2,4))	%chuyển ma trận sang kí tự
>>size(ans)

Để hiển thị chuỗi và biến, sử dụng hàm sprintf
Các kí tự đặc biệt như \n, \r, \t, \b, \f có ý nghĩa như xuống dòng mới, quay lại đầu dòng, cách lề 1 khoảng tab…

LệnhKết quả
sprintf(‘%.0e\n’,pi)3e+00
sprintf(‘%.1e\n’,pi)3.1e+00
sprintf(‘%.3e\n’,pi)3.142e+00
sprintf(‘%.0f\n’,pi)3
sprintf(‘%.1f\n’,pi)3.1
sprintf(‘%.3f\n’,pi)3.142
Lệnh tả
ischar(s)có phải là chuỗi kí tự không
isletter(s)có phải là kí tự không
isspace(s)có khoảng trống không
findstr(s1,s2)tìm chuỗi s2 trong chuỗi s1
strcmp (s1,s2)so sánh 2 chuỗi có bằng nhau không
strmatch(s1,s2)trả về vị trí chuỗi thứ 1 có trùng kí tự đầu chuỗi 2
lower(s)chuyển sang dạng viết thường
upper(s)chuyển sang dạng viết in hoa

Ví dụ các hàm xử lý chuỗi

>> b='Peter Piper picked a peck of pickled peppers';
>> findstr(b,'  ')
>> findstr(b,'p')
>> find(b=='p')
>> findstr(b,'cow')
>> findstr(b,'pick')
>> c='a2 : b_c';
>> ischar(c)
>> isletter(c)
>> isspace(c)
>> S=char('apple','banana','peach','mango','pineapple')
>> strmatch('pe',S)
>> strmatch('p',S)
>> strmatch('banana',S)
>> strmatch('Banana',S)
>> upper('Banana')
>> lower('Banana')