在ruby中删除数组中的特殊字符



我有一个如下所示的数组:

[
  [
    "["", "Mrs. Brain Bauch", "Vernice Ledner"]", 
    "["", "Robb Ratke", "Amaya Jakubowski"]",       
    "["", "Lindsey Cremin III", "Harvey Fisher"]", 
    "["", "Daniela Schneider", "Benny Schumm"]"
  ]
]

如何将其转换为如下所示的阵列结构:

[
  [
    ["Mrs. Brain Bauch", "Vernice Ledner"], 
    ["Robb Ratke", "Amaya Jakubowski"],       
    ["Lindsey Cremin III", "Harvey Fisher"], 
    ["Daniela Schneider", "Benny Schumm"]
  ]
]
require 'json'
input = [[
  "["", "Mrs. Brain Bauch", "Vernice Ledner"]", 
  "["", "Robb Ratke", "Amaya Jakubowski"]",       
  "["", "Lindsey Cremin III", "Harvey Fisher"]", 
  "["", "Daniela Schneider", "Benny Schumm"]"
]]
[input.first.map { |l| JSON.parse l }.map { |a| a.reject &:empty? }]
#⇒ [[
#    ["Mrs. Brain Bauch", "Vernice Ledner"], 
#    ["Robb Ratke", "Amaya Jakubowski"],       
#    ["Lindsey Cremin III", "Harvey Fisher"], 
#    ["Daniela Schneider", "Benny Schumm"]
#  ]]

如果arr是您的数组:

r = /
    (?<=")    # match `"` in a positive lookbehind
    [A-Z]      # match a capital letter
    [a-z.s]+ # match a letter, period or space one or more times
   /ix         # case-insenitive (i) and free-spacing (x) regex definition  modes
[arr.first.map { |s| s.scan r }]
  #=> [[["Mrs. Brain Bauch", "Vernice Ledner"],
  #     ["Robb Ratke", "Amaya Jakubowski"],
  #     ["Lindsey Cremin III", "Harvey Fisher"],
  #     ["Daniela Schneider", "Benny Schumm"]]] 

最新更新