gpt4 book ai didi

java - 为什么 DecimalFormat 允许字符作为后缀?

转载 作者:bug小助手 更新时间:2023-10-28 10:46:18 25 4
gpt4 key购买 nike

我正在使用 DecimalFormat 来解析/验证用户输入。不幸的是,它允许在解析时将字符作为后缀。

示例代码:

try {
final NumberFormat numberFormat = new DecimalFormat();
System.out.println(numberFormat.parse("12abc"));
System.out.println(numberFormat.parse("abc12"));
} catch (final ParseException e) {
System.out.println("parse exception");
}

结果:

12
parse exception

我实际上希望它们都出现解析异常。如何告诉 DecimalFormat 不允许像 "12abc" 这样的输入?

最佳答案

来自 NumberFormat.parse 的文档:

Parses text from the beginning of the given string to produce a number. The method may not use the entire text of the given string.

这是一个示例,可以让您了解如何确保考虑整个字符串。

import java.text.*;

public class Test {
public static void main(String[] args) {
System.out.println(parseCompleteString("12"));
System.out.println(parseCompleteString("12abc"));
System.out.println(parseCompleteString("abc12"));
}

public static Number parseCompleteString(String input) {
ParsePosition pp = new ParsePosition(0);
NumberFormat numberFormat = new DecimalFormat();
Number result = numberFormat.parse(input, pp);
return pp.getIndex() == input.length() ? result : null;
}
}

输出:

12
null
null

关于java - 为什么 DecimalFormat 允许字符作为后缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324997/

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