ruby - 使用 RegExp 格式化字符串以设置分隔符

标签 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

最佳答案

奇怪的是你没有得到异常:gsub 的第二个参数必须是字符串(或可以转换为字符串的东西),而不是正则表达式。

这是一个工作示例:

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

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

关于ruby - 使用 RegExp 格式化字符串以设置分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424323/

相关文章:

java - 如何使用Scanner的分隔符方法

python - 我需要使用 python 将 sql 表导出到管道分隔的文本文件中,包括列名

ruby - 动态交换 Rails3 布局

html - 像在浏览器中一样加载网页,但使用 Ruby

php - 正则表达式:如何匹配转义的双引号字符串?

javascript - 从字符串中提取信息

c++ - 如何提取字符串中的特定值

ruby-on-rails - 根据 rails 3 中的范围计算版税

ruby - 在 Linux 上的 rclone 安装卷中启动 ruby​​ irb 时出错

GString token 的正则表达式