回答編集履歴

1

追記

2021/01/04 08:24

投稿

winterboum
winterboum

スコア23567

test CHANGED
@@ -25,3 +25,27 @@
25
25
 
26
26
 
27
27
  「何のために」が実はあるのでしたらそれを開示いただき「なるほど」と感じたら取り組み直します。
28
+
29
+
30
+
31
+ 追記
32
+
33
+ def validate_each の最後の式が each なので、その結果は必ず "falseではない" となります。
34
+
35
+ 例えば value="1あ"だとすると、["1", "あ"]が返ります。
36
+
37
+ ので、最後に `count < 4` を入れましょう。
38
+
39
+
40
+
41
+ ただ、これ私の好みではないです。
42
+
43
+ `count = value.size + value.gsub(/[\t-~]/,'').size`
44
+
45
+ 文字数を数え、さらに半角を除いてから数え直して足す。
46
+
47
+
48
+
49
+ `\r\n`を一文字扱いにしたいなら `value = value.gsub(/\r\n/,"\n")` してから。
50
+
51
+ `[\t-~]` は 0x09から0x7eまでの文字。画面に入力ならこの範囲しか入らないのでこれで良いかと。