Ruby删除空间无法正常工作

时间:2011-11-16 15:02:38

标签: ruby

以下是代码:

ruby-1.9.2-p290 :019 > "a, , b, c".delete(" , ") 
 => "abc"

我希望它是

a, b, c

我做错了什么?

5 个答案:

答案 0 :(得分:3)

delete删除您移交给它的字符串中出现的所有字符(请参阅ruby-doc)。你需要的是像

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

更新

如下面的评论中所述,字符串是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

答案 1 :(得分:2)

从文档(释义):String#delete单独删除所有字符,因此在您的情况下,它将删除所有空格和所有逗号。你想要的可能是"a, , b, c".gsub(' , ', '')

答案 2 :(得分:1)

应为"a, , b, c".gsub(' ,', '')

http://codepad.org/weqgKd91

答案 3 :(得分:0)

根据ruby api 删除删除参数中的所有字符。 在你的情况下,它是空格和逗号。

答案 4 :(得分:0)

我想出了以下内容:

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

执行以下操作:

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