DecimalFormat 将数字与非数字转换
使用 DecimalFormat 在使用这种数字时不会出现解析异常:
123hello
显然不是真正的数字,并转换为 123.0 值。我怎样才能避免这种行为?
作为旁注,hello123 确实给出了一个例外,这是正确的。
谢谢, 马塞尔
Using DecimalFormat gives no parse exception when using this kind of number:
123hello
which is obviously not really a number, and converts to 123.0 value. How can I avoid this kind of behaviour?
As a side note hello123 does give an exception, which is correct.
Thanks,
Marcel
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要进行精确解析,您可以使用
将 pos 初始化为 0,完成后它将为您提供最后一个使用的字符之后的索引。
然后,您可以将其与字符串长度进行比较,以确保解析准确。
http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html#parse%28java.lang.String,%20java.text.ParsePosition%29
To do exact parsing, you can use
Initialize pos to 0 and when its finished it will give you the index after the last character that was used.
You can then compare this against string length to make sure the parse was accurate.
http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html#parse%28java.lang.String,%20java.text.ParsePosition%29
扩展@Kal的答案,这里有一个实用程序方法,您可以将其与任何格式化程序一起使用来进行“严格”解析(使用apache commons StringUtils):
Expanding on @Kal's answer, here's a utility method which you can use with any formatter to do "strict" parsing (uses apache commons StringUtils):
您可以使用正则表达式验证它是数字:
You can verify it is numeric using a RegEx: