2017-02-19 139 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