1

Is there a way to transform a string into multiple variables? If I try:

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

I know that I will get an array:

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

But I need a piece of code to transform string into multiple strings, something like this:

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

Is there a way to do that?

4

3 回答 3

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"

在 IRB 中测试ruby 2.0.0p247 (2013-06-27) [x64-mingw32]

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

于 2013-07-18T11:45:41.013 回答
2

您可以使用多个分配未来:

string1, string2, string3, string4 = "string1 string2 string3 string4".split(" ")
于 2013-07-18T09:55:38.023 回答
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”

于 2013-07-18T10:21:45.223 回答