如何获取文本和字符串?

问题描述:

我有一堆字符串在形式的数组:如何获取文本和字符串?

[“名称:喜”,“PW:洛尔”]

如何可以只提取分号和空间之后的部分在Ruby中?

+0

的可能重复[如何分割在Ruby中的字符串?](http://*.co m/questions/4032440/how to to split-a-string-in-ruby) – 2012-01-23 18:02:06

["name: hi", "pw: lol"].map{|x| x.split(': ')[1]} 

生产:

["hi", "lol"] 
+0

如果你不确定在:之后是否只有一个空格,你可以在':'上分割,然后使用.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} 
+0

您的答案格式不正确。代码行应该以4个空格开始。此外,您的答案似乎不起作用,请添加解释和/或修复它。 – spatz 2012-01-21 22:19:37