7.3.2. Porównywanie znaków i łańcuchów
Istnieją dwie funkcje służące do kategoryzacji znaków wewnątrz łańcucha.
- isletter - określa, czy dany znak jest literą.
- isspace - określa, czy znak jest spacją (odstąp, akapit, nowa linia).
Dla przykładu niech
mystring - ‘Room 401';
Funkcja isletter bada każdy znak w łańcuchu, tworząc wektor wynikowy o tej samej długości, co mystring:
A = isletter(mystring)
A =
11110000 Cztery pierwsze elementy A dają wynik 1 (prawda), ponieważ cztery pierwsze znaki mystring są literami.
Łańcuchy można porównywać ze wzglądu na:
- równość całych łańcuchów lub ich cząści,
- równość pojedynczych znaków w dwóch łańcuchach.
- kategoryzacją każdego elementu łańcucha, określającej czy jest to spacja, czy litera.
Funkcje te działają zarówno dla macierzy znaków jak i dla macierzy komórek zawierającej łańcuchy.
Do porównywania znaków macierzy stosowane są operatory relacji MATLAB-a. gdy porównywane macierze mają jednakowe rozmiary, lub gdy jedna jest skala-rem. Na przykład możemy użyć operatora równości (==), aby określić, które znaki w dwóch łańcuchach odpowiadają sobie nawzajem:
A = 'fate';
B = 'cake’;
A == B ans =
0 10 1
Wszystkie operatory relacji (>>>=,<,<=,==, ! = ) porównują wartości ASCII odpowiednich znaków.
Porównanie dwóch łańcuchów można zrealizować wykorzystując funkcje: stremp - określa, czy dwa łańcuchy są identyczne, stmemp - określa, czy pierwsze n znaków dwóch łańcuchów jest identyczne. Dla łańcuchów: strl = 'hello'; str2 = ’help';
wywołanie funkcji stremp daje w wyniku 0 (fałsz), na przykład:
>> C = stremp(strl,str2)
C =
96
0