如何移除Ruby数组中的双引号并转为数值数组
安全将Ruby字符串数组转为整数数组的方法
不用eval的话,有几个安全且高效的方案:
使用
to_i方法:这是最简洁的方式,适合确定字符串都是纯数字的场景["1", "2"].map(&:to_i) # 输出:[1, 2]to_i会自动将字符串转换为整数,即使字符串里有非数字前缀之外的内容(比如"123abc"会转成123),但如果你的输入都是合法数字字符串,完全够用,而且绝对安全,不会执行任何额外代码。使用
Integer()构造方法:如果需要严格校验输入(比如遇到非合法整数字符串时抛出错误),用这个更合适["1", "2"].map { |s| Integer(s) } # 输出:[1, 2]要是数组里有类似"1a"或者"abc"这样的字符串,
Integer()会直接抛出ArgumentError,能帮你提前发现无效输入,同样不存在安全风险。
为什么不能用eval?因为eval会把传入的字符串当作Ruby代码执行,如果数组里的元素是恶意构造的(比如"system('rm -rf /')"),会直接执行危险操作,在处理用户输入或者不可信数据时绝对要避免。
内容的提问来源于stack exchange,提问作者VDN
相关产品推荐
相关产品推荐

