irb从数组中提取字符串

时间:2014-08-29 17:02:46

标签: ruby arrays string

我在Nitro.io的一个盒子里工作,所以我的环境是用最后的功能构建的。

启动irb ...

>name = "James", lname = "Smith"   
=> ["James", "Smith"]   

它创建一个包含这两个字符串的数组。我可以通过name[0]name[1]访问它们,以获得我需要的输出

>"First name " + name[0] + ", Last name " + name[1]   
=>"First name James, Last name Smith"   

我需要通过访问将字符串放入数组的名称来获得相同的输出 示例:

>lname
=>"Smith"

但是,我如何以lname获取“Smith”的方式访问名字(“James”)?类似的东西:

>"First name " + ???? + ", Last name " + lname   
=>"First name James, Last name Smith"    

这句话给我用脚本评估:

>name = "James", lname = "Smith"   

我必须得到:

=>"First name James, Last name Smith"    

我无法改变任何事情。我只能在一行中进行输入评估。 我没有成功尝试(所有都获得正确的输出,但脚本不接受它们):

>"First name #{name[0]}, Last name #{name[1]}"    
>"First name " + name[0] + ", Last name " + name[1]     
>"First name " + name.first + ", Last name " + name.last    
>"First name " + name[0] + ", Last name " + lname    

我认为最好的方法是这四种方法中的最后一种方法,但更改name[0]用于lame之类的同类访问。

5 个答案:

答案 0 :(得分:0)

如果您只想创建两个变量,那么使用逗号的内容会比您需要的更复杂。

irb(main):001:0> first_name = "James"
=> "James"
irb(main):002:0> last_name = "Smith"
=> "Smith"
irb(main):003:0> "First name " + first_name + ", Last name " + last_name
=> "First name James, Last name Smith"
irb(main):004:0> 

答案 1 :(得分:0)

尝试使用以下语法进行多个变量赋值。

name, lname = "James", "Smith"

它会更高效,因为您不需要像name[0]这样的索引获取值。您将能够使用直接变量

获取这两个值

你可以把它写成:

name = "James"; lname = "Smith"

请注意我使用的是分号而不是逗号。分号是ruby中的语句终止符。

现在您可以使用以下变量:

> "First name " + name + ", Last name " + lname
=>"First name James, Last name Smith"  

答案 2 :(得分:0)

您可以使用Array方法.first.last

name = "James", "Smith"
#=> ["James", "Smith"]

name.first
#=> James

name.last
#=> Smith

答案 3 :(得分:0)

鉴于你无法改变起始输入......

irb(main):001:0> name = "James", lname = "Smith"
=> ["James", "Smith"]
irb(main):002:0> fname = name.first
=> "James"
irb(main):003:0> "First name " + fname + ", Last name " + lname
=> "First name James, Last name Smith"

您也可以使用:

irb(main):004:0> name.first
=> "James"
irb(main):005:0> name.last
=> "Smith"

答案 4 :(得分:0)

name = "James", lname = "Smith"

这会以一种意想不到的方式进行评估:

name = ["James", (lname = "Smith")]

因此,name被分配了一个"James"lname = "Smith"的数组(评估为"Smith")。

因此,您已在上下文中添加了2个值:

name = ["James", "Smith"]
lname = "Smith"

您没有选项name方式访问名字,Array的方法。
name[0]name.first,这就是全部。