Ruby中是否有Regex Delete?
我所有使用正则表达式的字符串删除都使用gsub,有没有更短的方法?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
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 "