字符串和数字分隔

时间:2012-06-21 06:08:19

标签: ruby-on-rails-3

我确实从表单

发布了电话号码
def update_phone
  if params[:phone]
  #here I want to check weather params[:phone] is number or string 
end

我确实使用params[:phone].class它始终显示字符串类。我怎样才能找到字符串或整数?

3 个答案:

答案 0 :(得分:1)

在Ruby中,您通常不会对类型进行操作,而是对变量的行为进行操作。如果你想chceck params[:phone]是有效的电话号码,请使用regexp,i。 E:

phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/

但更好的选择是在模型中的验证器中进行检查。

答案 1 :(得分:0)

编辑,感谢您的评论。我认为这适用于大多数常见情况。但是,这不适用于前导零:

str = params[:phone]

#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str

答案 2 :(得分:0)

您应该在模型中使用一些Validators并使用电子数据的正则表达式:根据您所在国家/地区的电话号码系统,只允许使用数字和一些格式字符,例如+-./()和空格:{{ 1}}或+23 (0) 322/242324-12都是有效数字。