gpt4 book ai didi

matlab - 如何在不读取字符串的情况下检查输入字符串格式的正确性?

转载 作者:行者123 更新时间:2023-12-03 08:33:00 24 4
gpt4 key购买 nike

我正在编写一个脚本,将两个格式为“HH:MM”的字符串作为输入。这些字符串是小时(HH)和分钟(MM)的时间。如果用户输入了一段时间的错误格式,我想显示一条错误消息,例如,如果他们认为脚本也可以解释秒,则显示“HH:MM:SS”。我将其设置为接受否定时间,因此将正确解释“-HH:MM”之类的输入。诸如“HHH:MMM”之类的具有小时和分钟大小可变的输入也是可以的,实际上任何形式为%s:%s的输入都应被接受,因为稍后将处理诸如“5:30 AM”之类的错误。

我需要的是在阅读之前测试输入的格式是否为“冒号字符串”,这可能吗?为了使问题更清楚,以下代码说明了我如何读取输入time1和time2:

[hour1, min1] = strread(time1, '%s%s', 'delimiter', ':');
[hour2, min2] = strread(time2, '%s%s', 'delimiter', ':');

如果time1和time2的格式错误,则strread会抛出无用的错误。我想先显示自己的错误以解释问题所在。在实际读取它们之前,如何检查time1和time2的格式?

想法:
formatSpec = '%s : %s';
input = textscan(time1,formatSpec);
%Compare input to formatSpec somehow to see if they match?
if (no_match)
error('time1 must be formatted as HH:MM');
end

最佳答案

您可以尝试这样的事情:

time1 = '10:21';
if isempty(regexp(time1,'^\d{2}:\d{2}'))
disp('the format is wrong') %won't display because the format if ok
end

并检查其他格式:
time1 = '100:21';
if isempty(regexp(time1,'^\d{2}:\d{2}'))
disp('the format is wrong') %will display because the format is wrong
end

编辑

如果您想接受“HHH:MMM”和其他情况,请使用:
regexp(time1,'^\d+:\d+')

对于否定情况('-HHH:MMM'或其他否定情况),请使用:
regexp(time1,'^-\d+:\d+')

第二次编辑

如果只想一行测试:
regexp(time1,'^(-|.){1}\d+:\d+$') % however this one doesn't support 'HH:MM AM'
regexp(time1,'^(-|.){1}\d+:\d+.+$') % Now support 'HH:MM AM'

我对其进行了测试,并针对您提到的每种情况返回 1

关于matlab - 如何在不读取字符串的情况下检查输入字符串格式的正确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com