如何获取文本和字符串?
["name: hi", "pw: lol"].map{|x| x.split(': ')[1]}
生产:
["hi", "lol"]
如果你不确定在:之后是否只有一个空格,你可以在':'上分割,然后使用.strip删除任何空格。 – Pablo 2009-10-04 09:23:14
你可以通过它们循环,并将它们分割了由:
像这样:
["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
由该建议加勒特和宠物呃一定会诀窍的。但是,如果你愿意,你可以更进一步,轻松地把它变成一个散列。
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#[]
因为我不知道您的具体需求,我不能说是否要散列或没有,但它是不错的选择。
我建议你使用正则表达式来处理字符串,虽然以前的答案工作
A = [ “名称:喜”, “PW:笑”]
a.map {|项目| item.match(/ \ W +: ([\ W \ S] +)/)[1]}
此将输出:
=> [ “喜”, “笑” ]
a.to_s
h=hi~=a
a.index[h].value
或
hi{1}
您的答案格式不正确。代码行应该以4个空格开始。此外,您的答案似乎不起作用,请添加解释和/或修复它。 – spatz 2012-01-21 22:19:37
的可能重复[如何分割在Ruby中的字符串?](http://*.co m/questions/4032440/how to to split-a-string-in-ruby) – 2012-01-23 18:02:06