Aar*_*all 3 ruby regex delimiter gsub
我正在尝试格式化字符串,如下所示
确保所有数字都使用破折号作为分隔符.示例: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
Run Code Online (Sandbox Code Playgroud)
奇怪的是你没有得到异常:gsub的第二个参数需要是一个String(或者可以转换为String的东西),而不是正则表达式.
这是一个有效的例子:
ssn = '123456789'
ssn.gsub(/(\d{3})(\d{2})(\d{3})/, '\1-\2-\3')
# => "123-45-6789"
Run Code Online (Sandbox Code Playgroud)
原始字符串中有三组数字.我们将每个组括在括号中.每对括号都会创建一个匹配组.在替换字符串中,我们使用\1包括第一个匹配组,\2包括第二个匹配组,并\3包括第三个匹配组,它们之间有破折号.