繁体   English   中英

Ruby gsub 模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM