如何从ruby中删除字符串中的所有非数字?

前端之家收集整理的这篇文章主要介绍了如何从ruby中删除字符串中的所有非数字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用户以下列形式输入数字:
  1. 1-800-432-4567
  2. 800-432-4567
  3. 800.432.4566
  4. (800)432.4567
  5. +1(800)-432-4567
  6. 800 432 4567

我希望所有这些都变成一个剥离版本,没有像18004324567这样的特殊字符.数据以字符串的形式出现,因此不需要字符串检查.

我的方法如下:

  1. def canonical_form number
  2. a = remove_whitespaces number #to clear all whitespaces in between
  3. a.gsub(/[()-+.]/,'')
  4. end
  5.  
  6. def remove_whitespaces number
  7. number.gsub(/\s+/,'') #removes all whitespaces
  8. end

有一个更好的方法吗?可以使用canonical_form方法中的正则表达式检查空格,而无需额外的空格方法吗?如何以更整洁的方式重构或完成?

解决方法

如果String的tr方法的第一个参数以^开头,那么它表示除列出的字符之外的所有字符.
  1. def canonical_form str
  2. str.tr('^0-9','')
  3. end

猜你在找的Ruby相关文章