如何删除一个在字符串中重复的撇号?
How do you delete one apostrophe where it is duplicated in a string?
在 ruby 中,假设我有这个字符串:"abc''xyz''"
(在 abc
和 xyz
之后有 2 个单引号)
现在,我正试图找到一种方法将它变成这个字符串:"abc'xyz'"
我只想从这个字符串中有两个撇号背靠背的位置删除一个撇号。提前致谢。
您可以使用 String#squeeze
:
"abc''xyz''".squeeze("'")
#=> "abc'xyz'"
此方法删除某个字符的重复项(如果它们紧跟在彼此之后)。它会将一行中的 n 个字符减少到一个。
例如,如果您有字符串 " '''''' "
,压缩它会 return 如下:
" '''''' ".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)
在 ruby 中,假设我有这个字符串:"abc''xyz''"
(在 abc
和 xyz
之后有 2 个单引号)
现在,我正试图找到一种方法将它变成这个字符串:"abc'xyz'"
我只想从这个字符串中有两个撇号背靠背的位置删除一个撇号。提前致谢。
您可以使用 String#squeeze
:
"abc''xyz''".squeeze("'")
#=> "abc'xyz'"
此方法删除某个字符的重复项(如果它们紧跟在彼此之后)。它会将一行中的 n 个字符减少到一个。
例如,如果您有字符串 " '''''' "
,压缩它会 return 如下:
" '''''' ".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)