Преобразование многострочной строки в массив в Ruby с использованием разрывов строк в качестве разделителей
Я хотел бы включить эту строку
"P07091 MMCNEFFEG
P06870 IVGGWECEQHS
SP0A8M0 VVPVADVLQGR
P01019 VIHNESTCEQ"
в массив, похожий на ruby.
["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS", "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]
с помощью split
не возвращает то, что я хотел бы из-за разрывов строк.
Ответы
Ответ 1
Это один из способов борьбы с пустыми строками:
string.split(/\n+/)
Например,
string = "P07091 MMCNEFFEG
P06870 IVGGWECEQHS
SP0A8M0 VVPVADVLQGR
P01019 VIHNESTCEQ"
string.split(/\n+/)
#=> ["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS",
# "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]
Ответ 2
string = "P07091 MMCNEFFEG
P06870 IVGGWECEQHS
SP0A8M0 VVPVADVLQGR
P01019 VIHNESTCEQ"
Использование CSV::parse
require 'csv'
CSV.parse(string).flatten
# => ["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS", "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]
Другой способ: String#each_line
: -
ar = []
string.each_line { |line| ar << line.strip unless line == "\n" }
ar # => ["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS", "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]
Ответ 3
Создание ответа @Martin:
lines = string.split("\n").reject(&:blank?)
Это даст вам только строки, которые оцениваются
Ответ 4
Split может взять параметр в виде символа, который будет использоваться для разделения, поэтому вы можете сделать:
lines = string.split("\n")
Ответ 5
Мне нравится использовать это как довольно общий метод для обработки новых строк и возвратов:
lines = string.split(/\n+|\r+/).reject(&:empty?)