在某些情况下,我需要将字符串转换为 float 或其他一些数字数据类型,但有可能得到一些不可转换的值,例如“-”或“/”,我无法验证所有值事先删除它们。
我想避免在这件事上使用 try/catch,有没有其他方法可以在 java 中进行正确的转换?类似于 C# TryParse
的东西?
最佳答案
我能想到的最简单的事情是 java.util.Scanner
。然而,这种方法需要为每个字符串创建一个新的 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);
}
然而,这两个都解析字符串两次,一次是为了测试字符串,第二次是为了获取值。根据您获得无效字符串的频率,捕获异常可能会更快。
关于java - 如何将字符串转换为 float 并避免在 java 中使用 try/catch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362027/