2011-11-16 57 views

回答

3

delete刪除您交給它的字符串中出現的所有字符(請參閱ruby-doc)。你需要的是像

"a, , b, c".gsub(/(\s*,\s*)+/, ', ') 

UPDATE

正如下面的評論中提到,該字符串是一個join(', ')的結果。在這種情況下,更好的方法是在加入之前刪除空/ nil元素,即

array.compact.join(', ')      # if some elements are nil 
array.delete_if(:&empty?).join(', ')   # if some elements are '' 
array.compact.delete_if(:&empty?).join(', ') # if both can occur 
+0

不需要正則表達式。 –

+0

@ MarnenLaibow-Koser:你有評論的機器人嗎? ;-)對於我的建議,你需要一個正則表達式(或者更多的代碼)。但問題的規範並不十分清楚。 –

+0

有什麼區別? – Victor

0

根據ruby api刪除除去了在參數中的所有字符。 在你的情況下,它既是空格又是逗號。

2

來自文檔(釋義):String#delete單獨刪除所有字符,所以在你的情況下它將刪除所有空格和所有逗號。你想要的可能是"a, , b, c".gsub(' , ', '')

+0

是的,更接近原始嘗試並且沒有正則表達式(+1)。但是,使用正則表達式,您可以更通用地修復可能的逗號錯誤。例如。你的解決方案將''a,b「'轉移到'」ab「'。 –

+0

這是真的,但目前還不清楚OP的意圖。 –

0

我想出了以下內容:

"a, , b, c".gsub(/\s+,/, "") 

其執行以下操作:

irb(main):035:0> "a, , b, c".gsub(/\s+,/, "") 
=> "a, b, c" 
+0

這不會完成OP想要的。 –

+0

@ MarnenLaibow-Koser:哦,是的,它的確如此。它按要求輸出'「a,b,c」'。其他一切都只是猜測。 –