gpt4 book ai didi

java - java中如何解析/转换(不确定这个术语)未知的数据类型

转载 作者:行者123 更新时间:2023-12-01 18:50:19 25 4
gpt4 key购买 nike

我确信这个问题已经被问过一百万次了,但这里是。

我试图在java中获取一个字符串值并解析或转换(我不确定这个术语)到它合适的数据类型。我尝试了很多搜索,但找不到答案,大概是我不知道正确的术语。我发现的所有搜索都涉及使用 XML 或自动装箱之类的东西,这与我想要的东西相差甚远。

例如用户输入可以是 int、char 或 double(例如 12.0),但它在代码中被捕获为字符串。可以这么说,我如何将其放入正确的桶中?我不知道为什么我找不到简单的答案。

编辑:我理解下面的 Integer.parseInt() 等,但我想知道如何在运行时通过使用 switch 或 if-else 语句来检查适当的类型

最佳答案

如果用户在键盘上输入一些内容,它是一个字符序列,即一个字符串,所以这就是您得到的。现在,可以将该字符串解释为数字、URL 或任何其他类型。

如果您知道需要什么样的输入,您可以使用该特定类型的解析函数,例如Integer.parseInt(String) .

但是,没有通用的方法来回答“这个字符串代表什么类型”的问题,因为可能性是无限的。字符串“1”可能旨在表示一个整数,或者它可以只是一个字符串,或者它可以是表示 unix 纪元之后一毫秒的日期。

如果您将自己限制在几种不同的可能性中,您当然可以编写一个像 Object parse(String) 这样的函数这会将字符串转换为具有非重叠字符串表示形式的几种可能类型之一 - 例如Integer、Float、Double、Bool、Date(具有特定格式),如果没有匹配项,则返回 String。但是,这很少有用,并且您需要支持的类型范围很可能仍然取决于您的应用程序,因此您仍然需要推出自己的解决方案。它可能看起来像这样:

Object myParse(String str) {
try {
return Integer.valueOf(str);
} catch(NumberFormatException e) {
// Not an Integer, try the next one
}

try {
return Double.valueOf(str);
} catch(NumberFormatException e) {
// Not a Double, try the next one
}

try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(str);
} catch(ParseException e) {
// Not a Date in format yyyy-MM-dd
}

throw new IllegalArgumentException("No matching format found.");
}

最后,您的字符串输入可能采用已知的容器格式,该格式表示值的类型及其字符串表示形式 - 例如对于 XML 格式:<Integer>1</Integer> 。这将允许您从字符串中获取明确键入的值,但它确实要求字符串遵循特定的容器格式。

关于java - java中如何解析/转换(不确定这个术语)未知的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094030/

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