gpt4 book ai didi

Ruby:获取查询字符串中值的正确类型

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:59 24 4
gpt4 key购买 nike

说我有

str = "a=2&b=3.05&c=testing"

我跑

require 'cgi'
out = {}
CGI::parse(str).each { |k,v| out[k] = v[0] }

当我输出a时,2是一个string,当我希望它是一个Int

out['a'] // "2" (instead of int 2)
out['b'] // "3.05" (instead of float 3.05)

有什么方法可以更正查询字符串中的类型吗?

更新:

添加这个方法来测试数字

def is_a_number?(s)
s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end

在解析期间

CGI::parse(url).each do |k,v|
val = v[0]
if is_a_number? val
val = val.include?('.') ? val.to_f : val.to_i
end
out[k] = val
end

似乎适用于基本示例。这有什么不安全的地方吗?

最佳答案

简短的回答是否定的,没有办法只输出正确的类型。您可以编写自己的解析器,尝试根据正则表达式匹配进行猜测。典型的处理方式是根据每个参数的预期类型手动解析它们。您可以调用 to_ito_f 等方法将它们转换为您想要的类型。

关于Ruby:获取查询字符串中值的正确类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com