以下是代码:
ruby-1.9.2-p290 :019 > "a, , b, c".delete(" , ")
=> "abc"
我希望它是
a, b, c
我做错了什么?
答案 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(' ,', '')
答案 3 :(得分:0)
根据ruby api 删除删除参数中的所有字符。 在你的情况下,它是空格和逗号。
答案 4 :(得分:0)
我想出了以下内容:
"a, , b, c".gsub(/\s+,/, "")
执行以下操作:
irb(main):035:0> "a, , b, c".gsub(/\s+,/, "")
=> "a, b, c"