有没有明星向前的方法来实现array.join(", ")逗号只包含在存在的元素之间?即,如果数组中不存在某些元素,我最终不会获得孤立逗号?
Sid*_*Sid 18
例:
["", nil, "test word", 5, 7, nil, "", nil, "", 7, 6, ""] => "test word, 5, 7, 7, 6"
编辑:请注意,这里的第一个方法需要Ruby on Rails.将第二种方法用于仅支持Ruby的解决方案
你可以试试这个删除这两个nil和空字符串"",然后用逗号连接(它消除了所有的nil值用compact,那么它split在""创建一个二维数组,其中任何""第一个数组中的元素是新的二维数组中只是空数组,然后它flatten会将2D数组转换回正常数组,但删除了所有空数组,最后它执行join(", ")此数组):
> array.compact.split("").flatten.join(", ")
array = ["", nil, "test word", 5, 7, nil, "", nil, "", 7, 6, ""]
array.compact => ["", "test word", 5, 7, "", "", 7, 6, ""].split("") => [[], ["test word", 5, 7], [], [7, 6], []].flatten => ["test word", 5, 7, 7, 6].join(", ") => "test word, 5, 7, 7, 6"
Run Code Online (Sandbox Code Playgroud)
编辑:另一种方式是:
> array.reject(&:blank?).join(", ")
array = ["", nil, "test word", 5, 7, nil, "", nil, "", 7, 6, ""]
array.reject(&:blank?) => ["test word", 5, 7, 7, 6].join(", ") => "test word, 5, 7, 7, 6"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7786 次 |
| 最近记录: |