JAVA如何分割出字符串中的数字?
对于刚⼊门JAVA的⼩⽩来说没有指定的API来完成这个操作,只能靠⾃⼰的想法来区别字符与整数。
在我刚⼊门的时候突发奇想,既然JAVA中有字符串转整数的API,那为什么不可以利⽤呢。于是利⽤转换异常想到了以下⽅法`
/**
* 分割出字符串中的数字
* @param str 需要进⾏分割的字符串
* @return 分割出的整数
*/
public static int quString1(String str){
char[] CharArray();
StringBuilder builder =new StringBuilder();
for(int i =0; i < arr.length; i++){
try{
// 如果传⼊的字符不是整数的话会抛出异常
Integer.parseInt(arr[i]+"");
}catch(Exception e){
// 如果抛出异常那这个字符肯定不是整数,所以直接跳过他就好了
continue;
}
// 如果没有抛出异常的话那这个字符肯定就是字符类型了
builder.append(arr[i]);
}
小白学java有前途吗
return Integer.String());
}
当然以上⽅法虽然是可⾏的,但是利⽤异常来转换带来的隐患也是很⼤的,再继续研究了⼀段时间之后我发现了ACSLL码表。所有的字符、符号或者数字在ACSLL码表中都有⼀个对应的数,其中数字0-9对应的则是48-57。于是现在有了以下⽅法
/**
* 分割出字符串中的数字
* @param str 需要进⾏分割的字符串
* @return 分割出的整数
*/
public static int quString(String str){
char[] CharArray();
StringBuilder builder =new StringBuilder();
for(int i =0; i < arr.length; i++){
// 如果字符的ACSLL码在48-57的范围内那肯定就是整数了
if(arr[i]>=48&& arr[i]<=57){
builder.append(arr[i]);
}
}
return Integer.String());
}
第⼆中⽅式虽然优化了很多,但是在做⼤量字符串分割的效率上还是慢了很多,于是乎在研究算法效率的道路上有了利⽤正则表达式的⽅法
/**
* 分割出字符串中的数字
* @param str 需要进⾏分割的字符串
* @return 分割出的整数
*/
public static int quString2(String str){
// 将指定字符串中的字符替换
// placeAll(String regex, String replacement)
// 第⼀个参数是要替换掉str中的谁,第⼆个参数是要把第⼀个参数替换成啥。
return Integer.placeAll("[^(0-9)]",""));
}
注意: 在以上三种⽅法中返回的都是int类型的参数,所以记住不要超出int类型的指定⼤⼩哦,或者你也可以直接将String返回
在这⼤家可以根据⾃⼰的理解选取对应的⽅式,在这我还是推荐⼤家使⽤第三种⽅法
好了,这⼀期的内容就给⼤家总结到这了,欢迎⼤家在评论区进⾏纠正和补充
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论