string Java如何从来自多个源的数据推断类型
我正在开发一个java服务器,它从多个传感器收集数据。这些传感器通常以字符串值的形式返回查询的值。在标题中,它指示服务器必须使用的数据类型来强制转换接收到的值。这些值可以是整型、布尔型、双精度、浮点型和长型
传感器可能不提供值的“数据类型描述”,因此: 我想通过分析接收到的字符串来了解数据类型
我在考虑使用正则表达式,但也许还有其他更好的方法。有什么建议吗
你可以在下面搜索框中键入要查询的问题!
我正在开发一个java服务器,它从多个传感器收集数据。这些传感器通常以字符串值的形式返回查询的值。在标题中,它指示服务器必须使用的数据类型来强制转换接收到的值。这些值可以是整型、布尔型、双精度、浮点型和长型
传感器可能不提供值的“数据类型描述”,因此: 我想通过分析接收到的字符串来了解数据类型
我在考虑使用正则表达式,但也许还有其他更好的方法。有什么建议吗
# 1 楼答案
我将创建一个数据验证器责任链,其每个元素将尝试将输入数据从限制性最强的类型转换为限制性最低的类型:
如果一个解析器未能解析数据,则链将其传播到下一个解析器,如果所有操作都失败,则抛出异常或将其用作字符串
# 2 楼答案
这篇文章激发了我的灵感,让我写出了自己的作品。它真的很容易使用String#trim()用于删除前导和尾随空格,因此以下操作很好:
但是如果用户只输入空格,也可以:
true/false的各种表示用于确定布尔性:
Byte、Short和Float的范围用于以最窄的可用类型框装值:
默认类型为String,但如果表达式为parsable by the JavaScript ScriptEngine,则将解析if并返回结果
如果输入字符串的长度为1且不是布尔值或字节,则将为其指定字符类型:
可能的扩展可能包括为公式求值设置标志,或将返回的类型限制为“公共”类型(布尔、整数、双精度、字符串)的标志。此代码也可以在gist.github中找到。无论如何,这是:
代码
# 3 楼答案
有几种方法可以做到这一点。 一种是尝试按不同的标准java类型以适当的顺序解析值,即
并捕捉每一步的异常 第二种方法-使用ApacheCommons库,可以检测类型,即