在Ruby中有没有一种Regex删除法?

问题描述 投票:11回答:4

我所有用regex删除的字符串都用gsub,有什么更短的方法吗?string.gsub(/\A.*\//,'')

ruby regex string ruby-1.9 gsub
4个回答
5
投票

一种方法是添加自己的短方法。

class String

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

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

end

通常这些代码会放在lib目录下, 比如libstring-extensions.rb.

注意,有些程序员真的不喜欢这样做,因为它是猴子补丁。我个人在项目中喜欢这样做,因为它使代码更容易理解--一旦我有了 "del "方法,我就能很快看到对它的调用只是删除了regexp。


5
投票

你可以指定你想删除的字符串的部分 保持 . . .

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

3
投票

我不这么认为。

String::delete删除字符,而且不与regex匹配,这是一种完全不同的方法。

我能想到的让你那行 "更短 "的唯一方法就是使用 string.gsub!(/\A.*\//,'') (注意那里的砰砰声)。

我想,这才是正确的做法:)


1
投票

你可以用 字符串::删除 在参数中指定一个regex。 假设你想删除所有非 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 "

这只是一个例子。

希望这能帮助你:)

© www.soinside.com 2019 - 2024. All rights reserved.