You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将转为字符串的Ruby符号数组还原为符号数组?

将字符串形式的符号数组还原为Ruby符号数组

给定字符串:

s = "[:test1, :test2]"

需要将其转换为实际的符号数组:

[:test1, :test2]

已尝试的方法

JSON.parse 和 YAML.load 解析失败

这两个内置解析方法都无法处理该字符串,会抛出语法错误:

irb(main):043> test
=> "[:test1, :test2]"
irb(main):044> JSON.parse test
/Users/[...]/.rbenv/versions/3.2.2/lib/ruby/3.2.0/json/common.rb:216:in `parse':
unexpected token at ':test1, :test2]' (JSON::ParserError)
irb(main):045>
irb(main):045> YAML.load test
/Users/[...]/.rbenv/versions/3.2.2/gemsets/rails_test/gems/psych-5.1.1.1/lib/psych/parser.rb:62:in `_native_parse': (<unknown>):
did not find expected node content while parsing a flow node at line 1 column 2 (Psych::SyntaxError)

eval 可实现但存在安全风险

eval能直接解析字符串得到目标数组,但由于存在代码注入风险,仅建议在完全可信的输入场景下使用:

irb(main):047> eval(test)
=> [:test1, :test2]

基础字符串操作有效但不够优雅

目前通过手动字符串处理可以实现需求,但需要逐一清理字符并转换类型:

irb(main):046> test.delete("[]:").split(", ").map(&:to_sym)
=> [:test1, :test2]

疑问

在Ruby 3.2.2版本中,是否存在无需自定义函数的更优内置方法来完成这个转换?


内容的提问来源于stack exchange,提问作者mochatiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:12:50