2017-02-19 164 views
0

与烧毛字符替换多个相同的字符在字符串我具有可以具有任意数量的动态生成的字符串“:”在其间它们的例子。在红宝石

example1: "test string:: this is test string" 
example2: "test string:::: this is test string" 

我想这样的字符串转换成以下

result string1: "test string: this is test string" 
result string2: "test string: this is test string" 

请帮

+1

您应该删除Rails标签,因为这是一个纯Ruby问题。读者通过标签过滤问题。 Rails标签可能会吸引那些只对Ra​​ils问题感兴趣的读者,这会浪费他们的时间。这也可能导致这个问题不会被只对纯Ruby问题感兴趣的读者看到,因为他们已经过滤了Rails的问题。 (我看你删除了Rails的标签,但因为标签被滥用了很多,我会离开这个评论的。) –

+2

我看你只是接受了我的答案。恐怕我有另一个投诉! :-)我常轨在提问者时,他们很快奖复选标记,往往只有一个答案已经公布。这次我不能很好地说,这只是因为这是我选择的答案。 Rapido的选择可能会阻碍其他答案,对于那些仍在准备答案的人来说,他们是无礼的,并且可能会导致不正确的答案不受质疑。有没有仓促,所以请考虑等待至少在未来几个小时(和/或删除本对号暂时)。当然,由你决定。 –

回答

5

使用String#squeeze

"test string:::: this is test string".squeeze(':') 
    #=> "test string: this is test string" 

"test string:::: this is:: test string".squeeze(':') 
    #=> "test string: this is: test string" 

另一种方法是使用String#gsub(或String#sub如果在字符串中的冒号最多一个运行)。

"test string:::: this is:: test string".gsub(/:+/, ':') 
    #=> "test string: this is: test string" 
+0

感谢卡里,它的工作非常适合我。 – power