检查“编辑文本”字符串的正确输入

时间:2014-12-17 23:10:32

标签: string matlab user-interface input matlab-guide

我有一个GUIDE GUI,我要求用户输入他们的名字。如果输入数字字符,字符串和数字字符的混合或空白框,它应该执行错误对话框。

问题在于,当我输入数字或字符串和数字字符的混合时,它输出Error Code II(第一个elseif语句)而不是Error Code III(输入数字)仅)或Error Code IV(输入数字和字符串)。非常感谢投入。

这基本上就是我所拥有的:

if isempty(editString)
errordlg('Please enter a name into the text-box. We thank you in anticipation.',...
'Error Code I');
return
elseif char(editString) > 12
    errordlg('Please enter a name that is less than 12 characters long. Thank you.',...
 'Error Code II');
    return
elseif isa(editString, 'integer')
    errordlg('Please enter a name, not numbers. Thank you.', 'Error Code III');
    return
elseif isa(editString, 'integer') && isa(editString, 'char')
    errordlg('Please enter a name without mixing numbers & characters. Thanks.',...
    'Error Code IV');
else 
delete(gcf)    
gui_02
end

1 个答案:

答案 0 :(得分:2)

好吧,isa()函数在这种情况下不起作用,因为您从Edit Text读取的所有内容都是string,换言之char。因此,如果您甚至编写isa('123', 'integer'),函数将返回0而不是1。无论如何,多亏了MATLAB,有一个函数:isstrprop()确定字符串是否属于指定类别,例如integerchar ..

检查以下代码:

if isempty(editString)
    errordlg('Please enter a name into the text-box. We thank you in anticipation.', 'Error Code I');
    return
elseif length(editString) > 12
    errordlg('Please enter a name that is less than 12 characters long. Thank you.', 'Error Code II');
    return
elseif ~isempty(find(isstrprop(editString, 'digit'), 1)) & isempty(find(isstrprop(editString, 'alpha'), 1))
    errordlg('Please enter a name, not numbers. Thank you.', 'Error Code III');
    return

elseif ~isempty(find(isstrprop(editString, 'digit'), 1)) & ~isempty(find(isstrprop(editString, 'alpha'), 1))
    errordlg('Please enter a name without mixing numbers & characters. Thanks.', 'Error Code IV');
    return
end

看起来并不优雅但有效。