我怎样才能巩固这个表达?

时间:2012-12-08 19:38:54

标签: ruby regex

我正在删除最初的“The”和乐队名称的空格,以便连接成一个url。 我有这个,但它很难看,我想巩固成一个表达式。

@artist.sub!(/[Tt]he/, '')
@artist.gsub!(/\s+/, '')

3 个答案:

答案 0 :(得分:3)

尝试:

@artist.gsub!(/(\A[Tt]he)|(\s+)/, '')

答案 1 :(得分:3)

您当然可以链接#sub#gsub表达式;如,

@artist = @artist.sub(/^[Tt]he/, '').gsub(/\s+/, '')

更紧凑,我会毫不犹豫地称之为优雅 - 只是聪明(并且不清楚)。

请注意使用#sub#gsub代替#sub!#gsub!。根据@ pguardiario的评论,如果没有匹配,则后两个将返回nil,导致NoMethodError异常。此外,请注意,这有一个锚,以防止从字符串的中间删除“The”。

如果您正在尝试创建一个用于URL的slug,那么最好使用库中的方法。

答案 2 :(得分:1)

我会选择:

@artist = @artist.sub(/\Athe\b/i, '').strip