2012-03-31 48 views
11

我所有的字符串刪除與正則表達式使用gsub,有沒有更短的方式? string.gsub(/\A.*\//,'')在Ruby中是否存在正則表達式刪除?

+3

這三個角色真的找你了嗎? – 2012-03-31 21:50:28

+0

大聲笑似乎正在做很多字符串刪除。但通過gsub做,似乎我做錯了。它應該通過string.delete來完成,不是嗎? – 2012-03-31 21:54:35

+0

string.delete只需要刪除哪些字符,而不是正則表達式。 string.slice!可以用來刪除基於正則表達式的字符串的一部分,但是比gsub更長... – Pafjo 2012-03-31 22:02:15

回答

5

一種方法是添加自己的短方法:

class String 

    def del(regexp) 
    gsub(regexp,'') 
    end 

    def del!(regexp) 
    gsub!(regexp,'') 
    end 

end 

通常這些代碼會去的lib /目錄下,例如LIB /串extensions.rb中

單挑有些程序員真的不喜歡這個,因爲它是猴子補丁。我個人喜歡它的項目,因爲它使代碼更容易理解 - 一旦我有「del」方法,我可以很快看到,它的調用只是刪除正則表達式。

+0

+1,但我很驚訝沒有人投這個票。 – 2012-04-02 21:16:59

3

我不這麼認爲。

String :: delete刪除字符,並且與正則表達式不匹配,這是一種完全不同的方法。

我可以想到讓你的那條線「更短」的唯一方法是使用string.gsub!(/\A.*\//,'')(注意那裏的爆炸)。

這是要走的路,我覺得:)

+0

@Vache哈哈,對。糾正它:P – Castilho 2012-03-31 22:38:17

5

您可以改爲指定要字符串的一部分保持。 。 。

string[/[^\/]*$/]