我已经学会了序列化的错误......现在我必须付钱。在我的数据库中,我有记录,其中String属性如下所示:
"---\n- '0'\n- Tent\n- '0'\n- '0'\n- Sleeping pad\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n"
是否有一种简单的方法可以解析内部的两个项目?在这种情况下,物品是帐篷和睡垫,但请注意,在这些长串中,可以隐藏任意数量的物品......
仅供参考,这是Ruby on Rails 4。
答案 0 :(得分:1)
long_string = "---\n- '0'\n- Tent\n- '0'\n- '0'\n- Sleeping pad\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n"
new_array = long_string.split("\n- ")
#mimic what the serialization function does, which is splitting up each of the items with the "\n- " thing
new_array.select! { |t| ("A".."Z").include? t[0] }
#select only elements of the newly created array where the first character is a capital letter, since it works out that all my items would start with a capital letter
本案例中的输出为=> ["Tent", "Sleeping pad"]
答案 1 :(得分:0)
使用此条目,您需要以下字符串来填充这些单词
(?<=^|\\n-\s)([\p{L} ]+?)(?=\\n)
如果你没有&#34;懒惰&#34;。
,请使用此功能(?<=^|\\n-\s)([a-zA-Z ]+?)(?=\\n)