使用换行符作为分隔符将多行字符串转换为Ruby中的数组

时间:2014-06-23 16:33:57

标签: ruby arrays string

我想把这个字符串

"P07091 MMCNEFFEG

P06870 IVGGWECEQHS

SP0A8M0 VVPVADVLQGR

P01019 VIHNESTCEQ"

进入一个看起来像红宝石的数组。

["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS", "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]

使用split因为换行符而无法返回我想要的内容。

5 个答案:

答案 0 :(得分:29)

这是处理空白行的一种方法:

string.split(/\n+/)

例如,

string = "P07091 MMCNEFFEG

P06870 IVGGWECEQHS

SP0A8M0 VVPVADVLQGR




P01019 VIHNESTCEQ"

string.split(/\n+/)
  #=> ["P07091 MMCNEFFEG", "P06870 IVGGWECEQHS",
  #    "SP0A8M0 VVPVADVLQGR", "P01019 VIHNESTCEQ"]

答案 1 :(得分:5)

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"]

答案 2 :(得分:4)

建立@Martin的回答:

lines = string.split("\n").reject(&:blank?)

这只会给你重要的行

答案 3 :(得分:1)

我喜欢将其用作处理换行符和返回值的通用方法:

lines = string.split(/\n+|\r+/).reject(&:empty?)

答案 4 :(得分:0)

以用于分割的角色的形式拆分take a parameter,所以你可以这样做:

lines = string.split("\n")