JAVA如何分割出字符串中的数字?

对于刚入门JAVA的小白来说没有指定的API来完成这个操作,只能靠自己的想法来区别字符与整数。

在我刚入门的时候突发奇想,既然JAVA中有字符串转整数的API,那为什么不可以利用呢。于是利用转换异常想到了以下方法`

	/**
	 * 分割出字符串中的数字
	 * @param str 需要进行分割的字符串
	 * @return 分割出的整数
	 */
    public static int quString1(String str){
        char[] arr=str.toCharArray();
        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]);
		}
        return Integer.parseInt(builder.toString());
    }

当然以上方法虽然是可行的,但是利用异常来转换带来的隐患也是很大的,再继续研究了一段时间之后我发现了ACSLL码表。所有的字符、符号或者数字在ACSLL码表中都有一个对应的数,其中数字0-9对应的则是48-57。于是现在有了以下方法

	/**
	 * 分割出字符串中的数字
	 * @param str 需要进行分割的字符串
	 * @return 分割出的整数
	 */
    public static int quString(String str){
        char[] arr=str.toCharArray();
        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.parseInt(builder.toString());
    }

第二中方式虽然优化了很多,但是在做大量字符串分割的效率上还是慢了很多,于是乎在研究算法效率的道路上有了利用正则表达式的方法

	/**
	 * 分割出字符串中的数字
	 * @param str 需要进行分割的字符串
	 * @return 分割出的整数
	 */
    public static int quString2(String str){
//    	将指定字符串中的字符替换
//    	str.replaceAll(String regex, String replacement) 
//      第一个参数是要替换掉str中的谁,第二个参数是要把第一个参数替换成啥。
        return Integer.parseInt(str.replaceAll("[^(0-9)]", ""));
    }

注意: 在以上三种方法中返回的都是int类型的参数,所以记住不要超出int类型的指定大小哦,或者你也可以直接将build.toString返回

在这大家可以根据自己的理解选取对应的方式,在这我还是推荐大家使用第三种方法

好了,这一期的内容就给大家总结到这了,欢迎大家在评论区进行纠正和补充

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值