[英]Ruby gsub pattern
我有以下字符串:
Rib Franzido - La Mandinne
我需要将空格更改为破折号(-):
blusa-rib-franzido-la-mandinne
但是使用 gsub 我得到了这个: blusa-rib-franzido---la-mandinne
代码: string.downcase.strip.gsub(' ', '-')
我该如何解决? 谢谢
只需挤压破折号:
"Rib Franzido - La Mandinne".tr(" ", "-").squeeze("-") # => "Rib-Franzido-La-Mandinne"
一种方法是使用正则表达式来做到这一点,它首先替换单词之间的空格,然后是另一个 gsub 来删除其他空格。
"Rib Franzido - La Mandinne".downcase.gsub(/(?<=\w)\s(?=\w)/, '-').gsub(' ', '')
=> "rib-franzido-la-mandinne"
"Rib Franzido - La Mandinne".gsub(/ - | /, '-')
#=> "Rib-Franzido-La-Mandinne"
正则表达式尝试按该顺序匹配" - "
或单个空格。 如果匹配,则将其转换为连字符。 如果可能存在多个连续空格,您可能希望按如下方式修改正则表达式。
"Rib Franzido - La Mandinne".gsub(/ +- +| +/, '-')
#=> "Rib-Franzido-La-Mandinne"
在老式/经典 Perl 兼容的正则表达式样式中:
"Rib Franzido - La Mandinne".gsub(/\s*-+\s*|\s+/, '-')
这匹配破折号前后的所有类型的空格以及多个空格/破折号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.