如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字数字或两者。这是我所尝试过的:如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字编号或者都
str = "abc."
str[3].is_a? Numeric
str[3].is_a? String
“。”这里也是字符串(因为ruby没有char),但是在我的有效字符串定义中,“abc”。是无效的。 是否有任何方法在红宝石检查isLetter和isDigital像java一样?
如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字数字或两者。这是我所尝试过的:如何检查字符串在ruby中是否有效?一个有效的字符串将只包括字符或数字编号或者都
str = "abc."
str[3].is_a? Numeric
str[3].is_a? String
“。”这里也是字符串(因为ruby没有char),但是在我的有效字符串定义中,“abc”。是无效的。 是否有任何方法在红宝石检查isLetter和isDigital像java一样?
你在正确的轨道上。 您只需要使用正则表达式来确定接受/拒绝哪些字符。
像这样的东西会接受所有小写和大写字母字符。
str = 'abc.'
str[/([a-zA-Z]+)/]
此操作,因为正则表达式([a-zA-Z]+)
一组中的一个或多个字符+
匹配()
用小写a-z
或大写A-Z
字符。
您可以使用http://rubular.com/来尝试不同的正则表达式。
您是否在寻找正则表达式?
>> 'abc.' =~ /[a-zA-Z]/
=> 0
>> 'abc.' =~ /[0-9]/
=> nil
正则表达式:(注意:如果下划线是可接受的字符然后/\W/
是可用的)。
def valid?(str)
(str =~ /[^a-zA-Z0-9]/).nil?
end
p valid? "123" # => true
p valid? "123$" # => false
没有正则表达式:
def valid?(str)
str.count("a-zA-Z0-9") == str.size
end
p valid? "123" # => true
p valid? "123$" # => false
你能澄清你的验证测试?为什么'abc.'无效? – maerics