我有一个接收输入的api;
@message.to = params[:to]
理想情况下应将"256773485930"
之类的输入作为电话号码发送。
但是,有些用户更喜欢发送"+256773485930"
我尝试使用@message.to = params[:to].gsub("+", "")
,但它创建了一个像这样的输入
" 256773485930"
在新字符串上添加空格。
如果没有在字符串前面添加空格,我如何删除+
?
答案 0 :(得分:1)
gsub
应该可以工作,但输入字符串也可能在前面有一个空格,这样你就可以params[:to].strip.gsub("+", "")
删除字符串前后的空格。
如果您只想保留数字,则更加健壮params[:to].gsub(/[^\d]/,"")
答案 1 :(得分:0)
答案 2 :(得分:0)
这是一个常见问题。 Google不久前开放了他们的libphonenumber,它可以解析多种格式的电话号码,然后再以不同的标准格式输出。该库被移植到Ruby Gem named global_phone。我建议使用这个宝石,因为它处理了我们可能甚至没有想到的许多边缘情况。用法示例:
require 'global_phone'
GlobalPhone.db_path = 'global_phone.json' # see Github page for more info
# somewhere else
@message.to = GlobalPhone.normalize(params[:to])
这会将每个号码转换为电话号码的规范化E.164国际字符串格式。虽然这意味着转换的电话号码实际上将以+
开头,但这是存储电话号码的“正确”和标准方式。