Проверка даты с заданным форматом в Matlab - PullRequest
4 голосов
/ 13 апреля 2011

Я проектирую графический интерфейс. У меня есть текстовое поле для редактирования, в которое я ввожу строку даты в следующем формате «31 марта 2011 10: 00: 00.000». Мне нужен код, чтобы проверить его и написать сообщение об ошибке в случае неправильного ввода. Спасибо за Ваше внимание. Приветствия.

Ответы [ 4 ]

4 голосов
/ 13 апреля 2011

Оберните datenum в try - catch, например:

try
    a=datenum('lkdsldkjhfsg');
catch
    disp('Bad date')
end
4 голосов
/ 14 апреля 2011

Не могли бы вы справиться с этим с помощью регулярного выражения. Если вам потребуется, чтобы ваш пользователь ввел дату в определенном формате, я мог бы проанализировать эту строку с помощью функции matlab regexp, чтобы определить, соответствует ли она заданному формату. В случае, если вы дали выше что-то вроде

s='31 Mar 2011 10:00:00.000'
regexp(s,'\d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2}\.?\d*')

можно использовать для проверки соответствия вашей даты формату.

2 голосов
/ 13 апреля 2011

Возможно, вы захотите взглянуть на datestr, datenum, предопределенные форматы даты и символьные идентификаторы для полей . Затем вы можете построить проверку каждого идентификатора, проверив, удовлетворяет ли он определенным критериям. Вы можете использовать error, чтобы выдать ошибку пользователю в случае неверного ввода.

1 голос
/ 15 апреля 2011

Спасибо всем за ответы.Это один из возможных кодов функций обратного вызова, соответствующий текстовому полю редактирования, который он может использовать:

user_entry = get(hObject,'string');
control = regexp(user_entry,'\d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2}\.?\d*')
if(numel(control)==0)
    errordlg('Invalid Input Format','Error Message','modal')
    uicontrol(hObject)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...