我在数组中有一堆字符串:
[“name:hi”,“pw:lol”]
如何在Ruby中提取分号和空格后的部分?
答案 0 :(得分:7)
["name: hi", "pw: lol"].map{|x| x.split(': ')[1]}
产生
["hi", "lol"]
答案 1 :(得分:4)
加勒特和彼得的建议肯定会成功。但是,如果您愿意,可以更进一步,轻松将其转换为哈希值。
values = ["name: hi", "pw: lol"]
hash = Hash[*values.map{|item| item.split(/\s*:\s*/)}.flatten]
# => {"name"=>"hi", "pw"=>"lol"}
第二行有很多内容,所以让我指出一些改进:
map
来电后我们有了数组[["name", "hi"], ["pw", "lol"]]
Hash#[]
获取将被映射为键,值,键,值等的值列表...因此,我们需要将映射的数组展平为传递给Hash#[]
由于我不知道你的确切需求,我不能说你是否想要哈希,但是有选择权很好。
答案 2 :(得分:1)
您可以循环浏览它们并按:
分割它们,如下所示:
["name: hi", "pw: lol"].each do |item|
puts item.split(":").last.lstrip
end
示例:
>> a = ["name: hi", "pw: lol"]
=> ["name: hi", "pw: lol"]
>> a.each do |item|
?> puts item.split(":").last.lstrip
>> end
>> hi
>> lol
答案 3 :(得分:1)
我建议您使用正则表达式来处理字符串,尽管之前的答案有效
a = [“name:hi”,“pw:lol”]
a.map {|项| item.match(/ \ W +: ([\ W \ S] +)/)[1]}
这会输出:
=> [“hi”,“lol”]
答案 4 :(得分:0)
a.to_s
h=hi~=a
a.index[h].value
或
hi{1}