「HH:MM」形式の 2 つの文字列を入力として受け取るスクリプトを作成しています。これらの文字列は、時間 (HH) と分 (MM) の時間です。スクリプトが秒も解釈できると思われる場合、ユーザーが「HH:MM:SS」などの間違った形式の時刻を入力した場合に、エラー メッセージを表示したいと考えています。負の時間を受け入れるように設定したので、「-HH:MM」のような入力は正しく解釈されます。'HHH:MMM' のような時間と分のサイズが可変の入力も問題ありません。'5:30 AM' のようなエラーは後で処理されるため、実際には %s:%s の形式の入力はすべて受け入れられる必要があります。
必要なのは、読み取る前に入力が「文字列コロン文字列」の形式であることをテストすることです。これは可能ですか? 問題をより明確にするために、入力 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