如何删除一个字符串中重复的撇号?

如何删除一个字符串中重复的撇号?

问题描述:

在Ruby中,说我有这个字符串:"abc''xyz''"如何删除一个字符串中重复的撇号?

(这些都是abc后2个单引号和xyz

现在,我试图找到一种方法,使之成为该字符串:"abc'xyz'"

我想在两个撇号背靠背的位置只从这个字符串中删除一个撇号。提前致谢。

+0

在提问前试过什么? –

您可以使用String#squeeze

"abc''xyz''".squeeze("'") 
#=> "abc'xyz'" 

此方法删除某个字符的副本,如果他们是在彼此之后立即。它将连续减少n个字符至一个。

举例来说,如果你有串" '''''' ",挤压它会返回如下:

" '''''' ".squeeze("'") 
#=> " ' " 
+0

太好了,谢谢! – athill16

+0

这非常方便。 –

+0

Hi @ athill16如果这个或任何答案已经解决了您的问题,请点击复选标记考虑[接受它](https://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 – Piccolo

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)