我正在格式化地址列表,例如:
New york city23 b
Miami 355c
我需要他们看起来像
New York City 23 B
Miami 355 C
问题是在字母+数字组合前后添加空格。我提出了以下正则表达式来突出问题区域:
/\p{L}\d|\d\p{L}/
但是我缺少在它们之间实际放置空格的逻辑。现在代码看起来像
"moscow city46 d".titleize.gsub(/\p{L}\d|\d\p{L}/, ' \0')
# titleize is a Rails method
输出
Moscow Cit y46 D
最佳答案
既然您使用了 titleize
,我假设您不介意使用其他 ActiveSupport 方法。它不像某些人那样“聪明”,但是String#squish
,用一个空格替换连续的空格,这是一个非常简单的解决方案:
str.gsub(/\d+/, ' \0 ').squish.titleize
Ruby(没有 Rails)有一个类似的 String#squeeze
方法,但与 squish
不同,它不会修剪前导和尾随空格,因此它必须与 String#strip
结合使用.
关于ruby - 在 Ruby 中的字母和数字之间插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43372399/