How to recognize if there is in a character a point '.'?

Dear Matlab community,
Maybe somebody can help me with the following problem. For a project I would if there is a character a point '.' by scanning each element of the character by returning a true (1), false (0) as answer in an array. I tried the following:
xx='00-055.0'
isstrprop(xx,'punct')
ans =
1×8 logical array
0 0 1 0 0 0 1 0
At the moment it also shows e.g. '-', but is there a method to find explicitely the point '.'?
Thank you.
Regards

 Respuesta aceptada

madhan ravi
madhan ravi el 8 de Abr. de 2019
Editada: madhan ravi el 8 de Abr. de 2019
contains(regexp(xx,'.','match'),'.')
%or
strcmp(regexp(xx,'.','match'),'.')
%or
cellfun(@(x)x=='.',regexp(xx,'.','match'))
Gives:
ans =
1×8 logical array
0 0 0 0 0 0 1 0

4 comentarios

??
regexp(xx,'.','match') simply splits xx into each of its character. Perhaps you meant
regexp(xx,'\.','match') %the \ escape is critical. dot on its own matches anything
No!, each character is split forming a cell array finally to attain logical array.
Well, then you don't need to use a regular expression engine to split a char vector into a cell array of individual characters
num2cell(xx)
will do the job faster.
Or to use "ismember()" or "==" to directly compare.

Iniciar sesión para comentar.

Más respuestas (2)

Guillaume
Guillaume el 8 de Abr. de 2019
Editada: Guillaume el 8 de Abr. de 2019
Edit: I misunderstood the question. It's even simpler than what I initially wrote.
Simply:
xx == '.'
If you want to check multiple characters at once, e.g. . and +
ismember(xx, '.+')
--------
Original answer
Simply
contains(xx, '.')
or
any(xx == '.') %probably faster than contains but only work as long as you're searching just for one character
if wanting to check if any of several characters are in xx, e.g. . and +:
any(ismember(xx, '.+')) %are any character of xx member of the set .+ ?

5 comentarios

No,
contains(xx,'.') % would just give logical whether dot is present in xx it doesn't return a logical exaclty how OP wants
??
>> xx = 'abcdefgh.dd.d'
xx =
'abcdefgh.dd.d'
>> contains(xx, '.')
ans =
logical
1
Just a scalar logical
madhan ravi
madhan ravi el 8 de Abr. de 2019
Editada: madhan ravi el 8 de Abr. de 2019
"For a project I would if there is a character a point '.' by scanning each element of the character by returning a true (1), false (0) as answer in an array."
Yes but OP wants the result to be as
ans =
1×8 logical array
0 0 0 0 0 0 1 0
for
xx = '00-055.0'
Ah, well it's even simpler:
xx == '.'
True :)

Iniciar sesión para comentar.

Adam
Adam el 8 de Abr. de 2019
Editada: Adam el 8 de Abr. de 2019
What is wrong with simply
xx == '.'
if xx is a char array rather than a string as it seems to be?

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 8 de Abr. de 2019

Comentada:

el 8 de Abr. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by