如何将字符串转换为多个变量

时间:2013-07-18 09:49:45

标签: ruby arrays string variables

有没有办法将字符串转换为多个变量? 如果我尝试:

string = "string1 string2 string3 string4"
string.split(" ")

我知道我会得到一个数组:

=> ["string1", "string2", "string3", "string4"]

但我需要一段代码将string转换为多个字符串,如下所示:

string1 = "string1"
string2 = "string2"
string3 = "string3"
string4 = "string4"

有办法吗?

3 个答案:

答案 0 :(得分:3)

以下是:

string = "string1 string2 string3 string4"
string.split(' ').each do |s|
   instance_variable_set :"@#{s}", s
   self.class.class_eval { attr_accessor :"#{s}" }
end

string1 #=> "string1"
string2 #=> "string2"

使用ruby 2.0.0p247 (2013-06-27) [x64-mingw32]

在IRB中测试

另一种方法是将分割结果存储在数组中,并使用ghost方法模拟变量访问。

答案 1 :(得分:2)

您可以使用多个作业未来:

string1, string2, string3, string4 = "string1 string2 string3 string4".split(" ")

答案 2 :(得分:0)

  

我需要将字符串转换为变量或多个字符串   名字,所以我可以特别使用它们中的任何一个,这就是数组的原因   不会有用

我知道你是新手,所以也许你不知道你可以引用单个数组元素,就像你可以分开变量一样?

string = "string1 string2 string3 string4"
my_words = string.split(" ")

if my_words[1] = "string2" 
  puts "I found 'string2' in the second word"
end

数组元素分别编号为0,1,2到(my_words.size - 1)

您可以使用负数从最后一个数组项向后工作,所以 my_words[-1]包含“string4”