symmetrical character array with only letters

1 vue (au cours des 30 derniers jours)
Elena
Elena le 20 Fév 2022
Modifié(e) : DGM le 22 Fév 2022
Im trying to make a function that gives a logical true if the character array is symmetrical and logical false if not.
So far I have:
a = 'abba'
isItSym = isequal(a(:),flip(a(:)))
res = isItSym
But for anything that is not A-Z or a-z it needs to come back as logical false and it does not (ex: 'p##p').
Im thinking some sort of if function with an sprintf to split the array up and then find any false values with char(0:64) and so on. Im a little new with matlab tho so im having trouble goin about this. Thanks!

Réponse acceptée

Voss
Voss le 20 Fév 2022
Modifié(e) : Voss le 20 Fév 2022
Use isstrprop():
a = 'abba';
isItSym = isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
1
a = 'p##p';
isItSym = isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
0
  5 commentaires
Elena
Elena le 22 Fév 2022
is was thinking
if myStr == '';
res = 0
else res = isItSym
but it doesnt seem to be working?
DGM
DGM le 22 Fév 2022
Modifié(e) : DGM le 22 Fév 2022
a = 'abba';
isItSym = ~isempty(a) && isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
1
a = 'abbc';
isItSym = ~isempty(a) && isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
0
a = 'a##a';
isItSym = ~isempty(a) && isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
0
a = '';
isItSym = ~isempty(a) && isequal(a(:),flip(a(:))) && all(isstrprop(a(:),'alpha'))
isItSym = logical
0

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by