我的所有字符串删除都使用正则表达式使用gsub,是否有更短的方法?
string.gsub(/\A.*\//,'')
答案 0 :(得分:5)
您可以改为指定要保留的字符串部分。 。
string[/[^\/]*$/]
答案 1 :(得分:5)
一种方法是添加自己的简短方法:
class String
def del(regexp)
gsub(regexp,'')
end
def del!(regexp)
gsub!(regexp,'')
end
end
通常,此代码将放在lib /目录中,例如lib / string-extensions.rb
有些程序员真的不喜欢这个,因为它是猴子修补。我个人喜欢它的项目,因为它使代码更容易理解 - 一旦我有“del”方法,我可以很快看到它的调用只是删除正则表达式。
答案 2 :(得分:3)
我不这么认为。
String :: delete删除字符,与regex不匹配,这是一种完全不同的方法。
我能想到让你的那条线更“短”的唯一方法就是使用string.gsub!(/\A.*\//,'')
(注意那里的爆炸声)。
这是我要走的路,我认为:)
答案 3 :(得分:2)
您可以通过在参数中指定正则表达式来使用 String :: delete 。
假设您要从字符串中删除所有非 AlphaNumeric ...
a="Test String with &(*ille#*)gal char!@#acters ^lorem % ipsum $"
a.delete!('^a-zA-Z0-9 .')
当然要小心包含空白和 DOT
以上代码将产生以下输出
"Test String with illegal characters lorem ipsum "
这只是一个例子。
希望这会有所帮助:)