有一些情况我需要将字符串转换为浮点数或其他一些数值数据类型,但有可能获得一些不可转换的值,如“ – ”或“/”,我无法预先验证所有值以删除他们.
我想避免使用try / catch这个问题,还有其他方法在java中进行正确的转换吗?类似于C#TryParse的东西?
我想避免使用try / catch这个问题,还有其他方法在java中进行正确的转换吗?类似于C#TryParse的东西?
解决方法
我能想到的最简单的事情是java.util.Scanner.但是,此方法需要为每个String提供一个新的Scanner实例.
String data = ...; Scanner n = new Scanner(data); if(n.hasNextInt()){//check if the next chars are integer int i = n.nextInt(); }else{ }
接下来,您可以编写一个正则表达式模式,用于检查字符串(复合体失败太大的值),然后在检查字符串后调用Integer.parseInt().
Pattern p = Pattern.compile("insert regex to test string here"); String data = ...; Matcher m = p.matcher(data); //warning depending on regex used this may //only check part of the string if(m.matches()){ int i = Integer.parseInt(data); }
但是这两个都解析了两次字符串,一次测试字符串,第二次解析值.根据您获取无效字符串的频率捕获异常可能会更快.
原文地址:https://www.jb51.cc/css/217466.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。