Ruby中如何拆分字符串、删除指定位置元素后重新拼接?
错误原因
delete_at 方法的返回值是被删除的元素本身,不是删除元素后的数组,所以你链式调用 join 时,实际是给被删除的字符串 "1010.1" 调用 join 方法,自然会抛出不存在该方法的错误。
正确实现方式
写法1:拆分后先存为变量再操作
s = '2.3-6020-1010.1-4.0-M-671924' arr = s.split('-') arr.delete_at(2) # 注意Ruby数组从0开始计数,要删第三个元素对应索引为2 new_s = arr.join('-')
执行后 new_s 的值就是你需要的 "2.3-6020-4.0-M-671924"。
写法2:用tap方法实现链式调用
如果不想单独声明变量存拆分后的数组,可以用tap方法在原数组操作后直接返回数组本身:
new_s = s.split('-').tap { |arr| arr.delete_at(2) }.join('-')
内容的提问来源于stack exchange,提问作者current_user
相关产品推荐
相关产品推荐

