摆脱内部阵列双引号没有图灵数组转换成字符串[关闭](Getting rid of double qu

2019-10-19 04:30发布

我有一个数组

X = [ “1”, “2”, “3”, “:*”, “:+”, “4”, “5”, “ - ”, “:/”]

我试图摆脱双引号的阵列内。

我知道我可以使用:

x.to_s.gsub( '“', '')

并且它会输出一个字符串:

“[1,2,3,:*,:+,4,5, - ,:/]”

所期望的输出我想是一个数组不是字符串:

[1,2,3,:*,:+,4,5, - ,:/]

有没有办法让我摆脱了双引号的阵列中的每个元素,但仍留下我的数组作为一个数组?

提前致谢!

Answer 1:

eval x.to_s.gsub('"', '')
# => [1, 2, 3, :*, :+, 4, 5, :-, :/]


Answer 2:

这里是你可以做这件事:

x=["1", "2", "3", ":*", ":+", "4", "5", ":-", ":/"]
=> ["1", "2", "3", ":*", ":+", "4", "5", ":-", ":/"]

x.map{|n|eval n}
=> [1, 2, 3, :*, :+, 4, 5, :-, :/]

重要: eval方法是不安全的,如果你来自非置信源(例如,用户输入)接受未过滤的输入。 如果你正在起草自己的字符串数组,然后eval是罚款。



Answer 3:

x = ["1", "2", "3", ":*", ":+", "4", "5", ":-", ":/"]

x.map {|e| e[0] == ':' ? e[1..-1].to_sym : e.to_i}

要么

x.map {|e| (e =~ /^\d+$/) ? e.to_i : e[1..-1].to_sym}

  # => [1, 2, 3, :*, :+, 4, 5, :-, :/] 

当然,这仅适用时的元素x均以整数和符号(我更喜欢使用eval )。



文章来源: Getting rid of double quotes inside array without turing array into a string [closed]