Ruby中是否有Regex Delete?

Ruby中是否有Regex Delete?,ruby,regex,string,ruby-1.9,gsub,Ruby,Regex,String,Ruby 1.9,Gsub,我所有使用正则表达式的字符串删除都使用gsub,有没有更短的方法? string.gsub(/\A.*\/,“”)我不这么认为 String::delete删除字符,但与正则表达式不匹配,这是一种完全不同的方法 我能想到的唯一办法是使用string.gsub来缩短你的那一行!(/\A.*\/,“”)(注意那里的砰砰声) 我想,这就是方法:)您可以指定要保留的字符串部分 一种方法是添加您自己的简短方法: class String def del(regexp) gsub(regexp

我所有使用正则表达式的字符串删除都使用gsub,有没有更短的方法?
string.gsub(/\A.*\/,“”)
我不这么认为

String::delete删除字符,但与正则表达式不匹配,这是一种完全不同的方法

我能想到的唯一办法是使用
string.gsub来缩短你的那一行!(/\A.*\/,“”)
(注意那里的砰砰声)


我想,这就是方法:)

您可以指定要保留的字符串部分


一种方法是添加您自己的简短方法:

class String

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

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

end
通常,此代码将放在lib/目录中,例如lib/string-extensions.rb

值得注意的是,一些程序员确实不喜欢这个,因为它是猴子补丁。我个人喜欢在项目中使用它,因为它使代码更容易理解-一旦我有了“del”方法,我可以很快看到对它的调用只是删除regexp。

您可以通过在参数中指定regex来使用String::delete

假设要从字符串中删除所有非字母数字

a="Test String with &(*ille#*)gal char!@#acters ^lorem % ipsum $"

a.delete!('^a-zA-Z0-9 .')
当然,要小心包含空白

上述代码将产生以下输出

"Test String with illegal characters lorem  ipsum "
这只是一个例子


希望这有帮助:)

这三个字符真的让你着迷吗?lol似乎在做大量的字符串删除。但通过gsub做这件事,似乎我做错了。应该通过string.delete,no?string完成。delete只接受要删除的字符,没有regexp。string.slice!可用于基于regexp删除字符串的一部分,但比gsub长…
delete
不接受regex。您始终可以创建一个字符串方法,如
gdel
,或者创建您想要的方法。您需要在每个字符串的一个位置或多个位置执行此操作吗?表达式中有
gsub
(而不是
sub
),这意味着您需要多个匹配项,但正则表达式中也有
\A
,这意味着您只需要一个匹配项。根据这一点,解决方案会有所不同。
"Test String with illegal characters lorem  ipsum "