半角英数文字を全角にしたい
viewsで作成されたフォームに「全角で入力してね」と表記していても半角で入力される。そんなユーザーは「そんくらいなんとかしてよ」とか言うに決まっている。
やってみると難しい。
まず、入力された値はutf8のはずなんだけど
pp NKF.guess(str)
> 5
判定出来ないらしい。
この状態で
str.tr("A-Z0-9","A-Z0-9")
ってやっても文字化けする。
入力されるであろう文字列が想定されているなら、無理矢理を行ってみる。
han_str = %w(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9) zen_str = %w(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) upmoji="" chk_str.split(//).each{|moji| han_str.each_with_index{|elem, j| upmoji << zen_str[j] if elem == moji } } chk_str = upmoji
ちょー強引だ。エラー処理とか考えていないし、エレガントじゃない。