使用RegExp设置分隔符的格式化字符串



我试图格式化字符串如下

确保所有数字都使用破折号作为分隔符。例如:480.01.4430和480014430都是480-01-4430。

这是我到目前为止想出的,但我不明白为什么它不工作

def format_ssns(string)
  ssn = string[/d{9}/]
  ssn.gsub(/d{9}/, /d{3}-d{2}-d{4}/)
end

奇怪的是你没有得到一个异常:gsub的第二个参数需要是一个String(或可以转换为String的东西),而不是一个regexp

下面是一个工作示例:

ssn = '123456789'
ssn.gsub(/(d{3})(d{2})(d{3})/, '1-2-3')
# => "123-45-6789"

原字符串中有三组数字。我们把每一组用括号括起来。每一对括号创建一个匹配组。在替换字符串中,我们使用1包含第一个匹配组,2包含第二个匹配组,3包含第三个匹配组,它们之间使用破折号。

如果您不关心字符串中的任何内容,则可以删除其他内容并按照您的需要进行格式化:

string.gsub(/D/, '').gsub(/(d{3})(d{2})(d{4})/, "\1-\2-\3")

相关内容

  • 没有找到相关文章

最新更新