-1

我正在尝试从数组中读取字符串并将其转换为不带引号的符号""。例如,给定:

my_array = ["apples", "oranges", "pears"]

我希望变量my_first_fruit返回:apples。我试过了:

my_first_fruit = my_array[0].to_sym

但是,结果如下:

my_first_fruit = :"apples"

而且我似乎无法摆脱"". 如果我输入

my_first_fruit = "apples"
my_first_fruit.to_sym

然后它返回:apples。这是为什么?

4

2 回答 2

3

尝试使用以下String#to_sym方法

"apples".to_sym # => :apples

my_array = ["apples", "oranges", "pears"].map(&:to_sym)
my_array[0] # => :apples

另请参阅String#intern

于 2013-09-11T17:37:51.367 回答
3

总结一下:

问题是,当您使用“.to_sym”转换带有空格的字符串(即:“Johnny Appleseed”)时,转换后的符号将显示为:“Johnny Appleseed”。这是由于 'Johnny' 和 'Appleseed' 之间的空格 - 如果您只是转换“apples”、“oranges”或“pears”,则不会发生这种情况。

如果您不需要引号,请在字符串中使用下划线而不是空格。


例如:

my_array = ["apple juice", "oranges", "pears"]
my_array.collect! {|fruit| fruit.to_sym}

将产生:

my_array[0] = :"apple juice"
my_array[1] = :oranges
于 2013-12-19T21:39:50.130 回答