2011-04-12 8 views
4

私はGUIを設計しています。編集したテキストボックスがあり、ここで'31 Mar 2011 10:00:00.000 'の形式で日付文字列を入力します。私はそれを検証し、無効な入力の場合にエラーメッセージを書くコードが必要です。ご清聴ありがとうございました。乾杯。Matlabで指定されたフォーマットの日付の検証

答えて

4

はあなたが正規表現でこれを扱うことができます。あなたのユーザに特定のフォーマットの日付を入力させる必要がある場合は、この文字列を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*') 

あなたの日付がそのフォーマットと一致するかどうかを見ることができます。

+0

あなたの答えをありがとう。私はそれが最も簡単で簡単だと思うので、私はそれを選んだ。乾杯。 – julian

2

datestr,datenumpredefined date formatsおよびsymbolic identifiers for the fieldsをご覧ください。次に、各識別子の周りに特定の基準を満たしているかどうかを確認することによって検証を構築することができます。 errorを使用すると、無効な入力があった場合にユーザーにエラーを投げることができます。

+0

ありがとうございます。私の場合、私はtry-catchステートメントと一緒にdatevecコマンドを使用しなければなりませんでした。私の解決策は両方の組み合わせであるため、どちらの回答が受け入れられるのか分かりません。 – julian

4

ラップtrydatenum - このようなcatch、:

try 
    a=datenum('lkdsldkjhfsg'); 
catch 
    disp('Bad date') 
end 
+0

あなたの答えをありがとう。私の場合、私はtry-catchステートメントと一緒にdatevecコマンドを使用しなければなりませんでした。私の解決策は両方の組み合わせであるため、どちらの回答が受け入れられるのか分かりません。 – julian

1

ありがとうございました。これは、使用できる編集テキストボックスに対応するポーズ可能なコールバック関数コードの1つです。

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 
関連する問題