我在Matlab(或Python)中有一个GUI界面,要求用户对特定事件进行评论。该注释很重要,并已加载到数据库中,以备将来对该事件进行跟踪。该评论必须详细。
我想避免诸如以下内容的懒用户输入:
并要求重新输入是否检测到这样的“惰性输入”:
valid_input = 0;
while valid_input~=1
valid_input = 0;
user_input = '';
user_input=InputTextRequest('Insert significant mandatory comment');
switch user_input
case {'exit','quit'}
out = Popup('PROCEDURE ABORTED','PROCEDURE HAS BEEN ABORTED BY USER');
return
otherwise
if CheckCommentValidity( user_input)~=1
msg={'Comment field have to be significant:', [user_input ' is not valid, add details.']};
out = Popup('NOTE NOT ACCEPTED',msg);
valid_input = 0;
else
valid_input = 1;
end
end
end
问题是要检测user_input
是否有效。
我想到了一个用于验证输入字符串中4个不同参数的函数:
n_unique
n_tot
n_space
n_vowels
我想知道我可以在这些参数之间进行哪些检查以确定字符串的有效性?我是意大利人,所以我知道我的语言例如使用的元音比英语更多,但无论如何,是否存在描述“正确”输入的参数/阈值列表?
现在,我将此功能与参数阈值一起使用时可以粗略地猜测出结果。
function valid = CheckCommentValidity( user_input)
valid=0;
%parameters
n_unique = length(unique(strrep(user_input,' ',''))); %number of unique chars excluded spaces
n_tot = length(user_input); %number of chars
n_space = sum(user_input==' '); %number of spaces
n_space = sum(ismember( user_input, 'aeiou'));
%sub checks
conformity_check(1) = n_unique > 8;
conformity_check(2) = n_tot >= 10;
conformity_check(3) = n_space >= 1;
conformity_check(4) = n_vowels >= 4;
%main check
if sum(conformity_check==1) == length(conformity_check)
valid=1;
else
valid=0;
end
end
编辑
一些说明:
UNKNOWN
值,n_vowels/n_tot
比率可以解决这个问题,This comment is useless, sorry
。