使用Ruby中的".delete"清理电话号码条目

asi*_*ing 0 ruby csv formatting phone-number ruby-1.9.3

我正在使用Ruby清理CSV文件中的一些电话号码条目.有些用户输入了不需要的字符,我想对它们进行排序和删除(包括:句点,括号,连字符).在编写代码时,我意识到我可以使用Ruby提供的.delete方法,如下所示:

  def clean_num
   @file.each do |line|
    number = line[3]
    #Would need a .delete for every unwanted character?
    clean_number = number.delete(".")
    puts clean_number
   end
  end
Run Code Online (Sandbox Code Playgroud)

删除上述其他字符的更有效方法是什么?

mea*_*gar 5

你正在寻找正则表达式:

clean_number = number.gsub(/[^\d]/, "")
Run Code Online (Sandbox Code Playgroud)

第一个参数gsub是要查找的模式,第二个参数是用什么来替换每个出现的.

这将[^\d]使用空字符串("")替换不是digit()的所有内容.

  • 使用`gsub(/\D /,"")`而不是`gsub(/ [^\d] /,"")``.使用`/ [^ d] /`是很长的路:`'1(555)555-1212'.gsub(/\D /,'')=>"15555551212"` (5认同)