首页 > 解决方案 > 使用包含?命令搜索包含数字和字母混合的字符串

问题描述

我正在尝试检查该字符串是否是格式为“XXXX XXXX”的有效电话号码,其中每个 X 是从 0 到 9 的整数。如果其有效返回 TRUE,否则返回 FALSE。

我不确定为什么不能!(0..9).include?(char)正常工作。

任何意见,将不胜感激。谢谢

def phone_number(str)
  if str.length == 9 && str[4] = " "
    str[4] = ""   
    str.each_char do |char|
      if !(0..9).include?(char)
        print false
      end
    end
    return true
  end
  return false
end

print phone_number("1234 5678") # => true
puts
print phone_number("123 5678") # => false
puts
print phone_number("1234 df78") # => false
puts
print phone_number("12345678") # => false

标签: ruby

解决方案


我建议使用正则表达式来实现您想要做的事情!

这是示例代码:

def phone_number(str)
 !!str.match(/^\d{4}\s{1}\d{4}$/)
end

print phone_number("1234 5678") # => true
puts
print phone_number("123 5678") # => false
puts
print phone_number("1234 df78") # => false
puts
print phone_number("12345678") # => false

推荐阅读