如何删除一个字符串中重复的撇号?
问题描述:
在Ruby中,说我有这个字符串:"abc''xyz''"
如何删除一个字符串中重复的撇号?
(这些都是abc
后2个单引号和xyz
)
现在,我试图找到一种方法,使之成为该字符串:"abc'xyz'"
我想在两个撇号背靠背的位置只从这个字符串中删除一个撇号。提前致谢。
答
您可以使用String#squeeze
:
"abc''xyz''".squeeze("'")
#=> "abc'xyz'"
此方法删除某个字符的副本,如果他们是在彼此之后立即。它将连续减少n个字符至一个。
举例来说,如果你有串" '''''' "
,挤压它会返回如下:
" '''''' ".squeeze("'")
#=> " ' "
答
String#squeeze
是你需要什么,gsub
确实是一个坏主意。
Benchmark.bm do |bm|
bm.report("squeeze") do
iterations.times do
"e''eee''e'e''''e".squeeze("'")
end
end
bm.report("gsub") do
iterations.times do
"e''eee''e'e''''e".gsub(/\'+/, "'")
end
end
end
和结果:
user system total real
squeeze 6.109000 0.000000 6.109000 ( 6.110040)
gsub 22.454000 0.000000 22.454000 (22.469204)
在提问前试过什么? –