Ruby中有正则表达式删除吗?

时间:2012-03-31 21:43:17

标签: ruby regex string ruby-1.9 gsub

我的所有字符串删除都使用正则表达式使用gsub,是否有更短的方法? string.gsub(/\A.*\//,'')

4 个答案:

答案 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 "

这只是一个例子。

希望这会有所帮助:)