我刪除了連接到一個url中的樂隊名稱的初始「The」和空格。 我有這個,但它很醜,我想合併成一個表達式。我該如何鞏固這個表情?
@artist.sub!(/[Tt]he/, '')
@artist.gsub!(/\s+/, '')
我刪除了連接到一個url中的樂隊名稱的初始「The」和空格。 我有這個,但它很醜,我想合併成一個表達式。我該如何鞏固這個表情?
@artist.sub!(/[Tt]he/, '')
@artist.gsub!(/\s+/, '')
當然,你可以鏈#sub
和#gsub
表達;例如,
@artist = @artist.sub(/^[Tt]he/, '').gsub(/\s+/, '')
任何更緊湊,我會毫不猶豫地把它優雅—只是聰明的(和不明確)。
請注意使用#sub
和#gsub
而不是#sub!
和#gsub!
。 Per @ pguardiario的評論,如果沒有匹配,第二個將返回nil,導致NoMethodError
異常。另外請注意,這有一個錨點來防止從字符串中間刪除「The」。
如果你正在嘗試創建一個在URLs中使用的slu you,你最好用一個庫中的方法。
+1爲更可維護的方法。如果OP使用單個空格替換空格,我可能不會使用'\ s',而是使用''''或者切換到'squeeze('')'。 –
小心,如果沒有匹配,sub!'返回nil。還包括界限,否則你會遇到麻煩。 – pguardiario
@pguardiario:出色的觀察。 –
我會去用:
@artist = @artist.sub(/\Athe\b/i, '').strip
爲什麼一定要在一個正則表達式?這隻會導致更難以維護的更復雜的模式。 –