アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるテキストボックスに入力されているのが、「日付」ならば(○)を「出荷なし」ならば(-)をというように表示させたいのです。
日付は全角で入力させたいのですが、どうしたらいいのでしょう。
教えて下さい。
if($input=~/\d\d\d\d\d\d/){
$other2 = '○';
}elsif($input=~'出荷なし'){
$other2 = '-';
}elsif($input=~'未出荷'){
$other2 = '×';
}elsif($input=~' '){
$other1 = '※';
}

A 回答 (2件)

日付のフォーマットは決まっているのですか?それならその正規表現を


使ってそのようにプログラムすればよろしいと思います。
正規表現の書き方に悩んでらっしゃるのなら、まずフォーマットを
お教えください。

また、全角よりも半角英数字のほうがなにかと処理しやすいことは確かです。
\dも、半角数字にマッチするものであり、全角には対応していません。
jcode.pl で全角英数字を半角に変換してしまうのが簡単そうですね。
(全角で入力させたいのは出力の関係ですか?それでも、チェック時だけ
半角に変換したものを使うのは別に変なことではありません)

require 'jcode.pl';
$check_input = $input;
jcode::tr(\$check_input, '0-9', '0-9');
これで半角数字が$check_inputに入りますから、
if ($check_input =~ /^\d+$/) {
$other2 = '○';
elsif ....
などとすればいいでしょう。なお、固定文字列との比較のときは、確かに
正規表現のマッチングでも同じ効果が得られますが
$input eq '出荷なし'
と「eq」を使ったほうが効率が良いです。

まず入力ページの設計として、日付かそうじゃないかを分けたほうがいいと
思いますが…。
ラジオボタンで「出荷なし」と「日付入力」を選ばせ、
日付入力をチェックしたときだけテキストボックスが有効になるように…。
そうすれば、必ずテキストには日付だけがくるということになります。

ほんとうは、できれば日付も選択式にして、余計な文字を入力できない
ような仕組みが望ましいのですが。日付の形式も人によってばらばらですよね?
「平成13年五月28日」とか「2001/05/28」とか。
「全角でこのフォーマットでお願いします」と但し書きすればいくらか
ミスは減るでしょうが…。
    • good
    • 0

こんにちは。


プログラマとして、6年程勤務してきた者です。
答えになっていないかもしれませんが、
参考までに・・・。

日付ならば→日付の関数に値を参照させ、
Trueであれば、’○’
Falseであれば、’-’
としたらどうでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!