我需要检查字符串是否以ROT开始,范围0-26和空格....例如我的输入必须是ROT12“some string”,其中ROT可以在ROT0-ROT26范围内...知道如何用
检查ROT input.match /^ROT/
但需要这样的东西
input.match /^ROT[0..26] /
腐烂后面的白色空间也很重要。
答案 0 :(得分:3)
你可以随时用以下方式做到这一点:
input.match(/\AROT(0|1|2|3|4|...26) /)
或更一般地说:
input.match(/\AROT(1?[0-9]|2[0123456]) /)
其中\A
是^
的更具体版本,表示“字符串开头”,而^
表示“行首”。
答案 1 :(得分:1)
为了提高可读性,请考虑单独执行范围测试。
def string_ok?(str)
str.match?(/\AROT\d+ /) && str[3..-1].to_i <= 26
end
string_ok? "ROT12 " #=> true
string_ok? "ROT12 cat" #=> true
string_ok? "ROT " #=> false
string_ok? "RO0 " #=> false
string_ok? "ROT0" #=> false
string_ok? "1ROT0 " #=> false
string_ok? "ROT27 " #=> false
string_ok? "ROT-3 " #=> false