ruby - 如何在 Ruby 中将字符串解析为哈希表

标签 ruby string parsing hashtable

我正在从远程设备获取字符串形式的数据。我需要解析数据。数据通常是这样的:

MO                SCGR  SC         RSITE           ALARM_SITUATION
RXOTG-59            59  0          EK0322          ABIS PATH FAULT
RXOCF-59                           EK0322          LOCAL MODE
RXOTRX-59-0         4              EK0322          LOCAL MODE
RXOTRX-59-1                        EK0322          LOCAL MODE
RXOTRX-59-4             0          EK0322          LOCAL MODE
RXOTRX-59-5         1   3          EK0322          LOCAL MODE
RXOTRX-59-8                        EK0322          LOCAL MODE
RXOTRX-59-9                        EK0322          LOCAL MODE

我喜欢将数据作为数组的数组或任何其他编程合理的结构。

我使用以下方法将数据拆分为一个数组:

str.split("\r\n")

然后删除数组中每个元素的多余空间:

tsgs.map! {|tsg| tsg.gsub(/\s+/, " ").split(" ") }

但这有局限性,因为不考虑空单元格。我希望数组包含五个元素,但实际包含的元素少于五个。

情况1:在这种情况下,我得到了预期的结果:

RXOTG-59            59  0          EK0322          ABIS PATH FAULT

转换为

["RXOTG-59", "59", "0", "EK0322", "ABIS PATH FAULT"]

情况 2:在这种情况下,我得到了意想不到的结果:

RXOTRX-59-9                        EK0322          LOCAL MODE

转换为

["RXOTRX-59-9", "EK0322", "LOCAL MODE"]
   def getCommandResult(tgdatas)
        tgdatas_arr = tgdatas.split("\r\n")
        tsgs = tgdatas_arr[5..tgdatas_arr.index("END")-2]
        tsgs.map! {|tsg| tsg.gsub(/\s+/, " ").split(" ")[0] }
        return tsgs
    end

最佳答案

String.unpack使用指令“A”非常适合固定宽度的字符串。

str = "RXOTRX-59-9                        EK0322          LOCAL MODE"
p str.unpack("A20A4A11A16A15" ) # => ["RXOTRX-59-9", "", "", "EK0322", "LOCAL MODE"]

关于ruby - 如何在 Ruby 中将字符串解析为哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313981/

相关文章:

python - 在python中解析文本文件

java - 如何加载 html 到 styledocument

ruby-on-rails - rails : Find all X that are assigned to one Y

sql - ActiveRecord 的意外行为包括

ruby-on-rails - Ruby on Rails : How can i get the username from users table with Post. 分页?

python - 如何向文件中的每一行添加一个字符串?

string - 如何通过R中字符串的最后一个字符对数据帧进行子集化

java - 最后一次出现数字后的子字符串? (JAVA)

ruby - 是否可以在 RPG Maker XP 中更新 Ruby 版本

php - Magento getUrl 不适用于目录/类别对象?