Number and alphabet

Hi,
I have edittext and pushbutton.
If I write with "sym(' ')" for example a1 or R2 or alfa34...matlab works good. If I write any text in this format a1 into edittext, then I want to enable pushbutton.
But if the firts is number for example 1a or 45R or 89gama, then matlab generate error. So if I write any text in this format 2a into edittext, then I want to disable pushbutton.
Please, how Can I do this?
Thank you

3 commentaires

Oleg Komarov
Oleg Komarov le 7 Mai 2012
You cannot create variables which start from a number. This is a naming convention for variables and functions.
john
john le 7 Mai 2012
Yes, I understand...but I need avoid, that somebody will insert variables which start from a number.
John D'Errico
John D'Errico le 7 Mai 2012
Use a regular expression to test for this event.

Connectez-vous pour commenter.

Réponses (1)

Titus Edelhofer
Titus Edelhofer le 7 Mai 2012

1 vote

Hi,
you can use isvarname for this purpose, something like
str = get(handles.edit1, 'string');
if isvarname(str))
set(handles.pushbutton1, 'enable', 'on')
else
set(handles.pushbutton1, 'enable', 'off')
end
Titus

9 commentaires

john
john le 7 Mai 2012
and also I need...If I write only number or a1 or R55, then enable pushbutton.
It is possible?
Oleg Komarov
Oleg Komarov le 7 Mai 2012
isvarname does that, try Titus' solution.
john
john le 7 Mai 2012
Sorry guys,
but if I write number for example 53, pushbutton is not enabled....I think it is not working..
john
john le 7 Mai 2012
where can be a problem? :(
Titus Edelhofer
Titus Edelhofer le 7 Mai 2012
Hi,
do I understand right: "only a number" should enable as well, although it's not a variable name? Then change the if to
if isvarname(str) || ~isnan(str2double(str))
Titus
Walter Roberson
Walter Roberson le 7 Mai 2012
Should only non-negative integers be allowed like 53, or should negatives be allowed? Floating point numbers? Exponential format? Titus's use of str2double() will allow numbers in all formats, including -3.83456e-009
john
john le 8 Mai 2012
Titus, yes only number or string in form "R43" or "beta9".
Walter, only positive floating point numbers without zero....maybe it can be used
if any(regexp(char(get(handles.edit1,'String')),'[^1-9.]'))
set(handles.pushbutton1,'enable','off');
else
set(handles.pushbutton1,'enable','on');
john
john le 17 Mai 2012
I think, that command "~isvarname(string) || isnan(str2double(string))" doesn't work. Do you have any Idea?
,
,
if ~isvarname(string) || isnan(str2double(string))
set(handles.pushbutton1,'enable','off');
else
set(handles.pushbutton1,'enable','on');
end;
Walter Roberson
Walter Roberson le 17 Mai 2012
What difficulties are you encountering?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Entering Commands dans Centre d'aide et File Exchange

Question posée :

le 7 Mai 2012

Community Treasure Hunt

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

Start Hunting!

Translated by