java提取字符串数字,Java获取字符串中的数字

================================

©Copyright 蕃薯耀 2020-01-17

https://www.cnblogs.com/fanshuyao/

具体的方法如下:

/** * 把字符串数字类型的数字取出来(只取遇到非数字字符前,包括空格) * @param str * <li>"1-0我5013我24a5c6" 》 1</li> * <li>"10 5 013我24a 5c6" 》 10</li> * <li>"105013我24a5c6" 》 105013</li> * <li>"000" 》 000</li> * <li>"00010123600" 》 00010123600</li> * <li>"好20我1a2b" 》 空字符串</li> * @return */ public static String getPrefixNumberText(String str){ if(StringUtils.isBlank(str)){ throw new RuntimeException("参数str不能为空"); } StringBuffer number = new StringBuffer(""); String[] strArray = str.split(""); for (int i=1; i<strArray.length; i++) { if(RegUtils.isNumberText(strArray[i])){ number.append(strArray[i]); }else{ break; } } return number.toString(); } /** * 把字符串数字类型的数字取出来(只取遇到非数字字符前,但不包括空格) * @param str * <li>"1-0我5013我24a5c6" 》 1</li> * <li>"10 5 013我24a 5c6" 》 105013</li> * <li>"105013我24a5c6" 》 105013</li> * <li>"000" 》 000</li> * <li>"00010123600" 》 00010123600</li> * <li>"00010123我600" 》 00010123</li> * @return */ public static String getPrefixNumberTextIgnoreSpace(String str){ if(StringUtils.isBlank(str)){ throw new RuntimeException("参数str不能为空"); } StringBuffer number = new StringBuffer(""); String[] strArray = str.split(""); for (String string : strArray) { if(!StringUtils.isBlank(string)){ if(RegUtils.isNumberText(string)){ number.append(string); }else{ break; } } } return number.toString(); } /** * 把字符串数字类型的所有数字取出来 * @param str * <li>"1-000我10123我60#0" 》 100010123600</li> * <li>"00010-+123我600" 》 00010123600</li> * <li>"我是2019我600" 》 2019600</li> * <li>"我是20 -19我 600" 》 2019600</li> * @return */ public static String getNumberText(String str){ if(StringUtils.isBlank(str)){ throw new RuntimeException("参数str不能为空"); } StringBuffer number = new StringBuffer(""); String[] strArray = str.split(""); for (String string : strArray) { if(!StringUtils.isBlank(string) && RegUtils.isNumberText(string)){ number.append(string); } } return number.toString(); } /** * 把字符串数字类型的数字取出来(只取遇到非数字字符前,不包括空格)转换成数字 * @param str * <li>"1-0我5013我24a5c6" 》 1</li> * <li>"10 5 013我24a 5c6" 》 105013</li> * <li>"105013我24a5c6" 》 105013</li> * <li>"000" 》 0</li> * <li>"00010123600" 》 10123600</li> * @return */ public static long getPrefixNumber(String str){ String number = getPrefixNumberTextIgnoreSpace(str); if(StringUtils.isBlank(number)){ return 0; } //去掉前面为0的,如0099变成99 String[] texts = number.split(""); StringBuffer numbers = new StringBuffer(""); for (String text : texts) { if(numbers.length() < 1){ if(text == "0"){ continue; } } numbers.append(text); } if(numbers.length() < 1){ return 0; } return Long.parseLong(numbers.toString()); } /** * 把字符串数字类型的数字取出来转换成数字 * @param str * <li>"1-000我10123我60#0" 》 100010123600</li> * <li>"00010-+123我600" 》 10123600</li> * <li>"我是2019我600" 》 2019600</li> * <li>"我是20 -19我 600" 》 2019600</li> * @return */ public static long getNumber(String str){ String number = getNumberText(str); if(StringUtils.isBlank(number)){ return 0; } //去掉前面为0的,如0099变成99 String[] texts = number.split(""); StringBuffer numbers = new StringBuffer(""); for (String text : texts) { if(numbers.length() < 1){ if(text == "0"){ continue; } } numbers.append(text); } if(numbers.length() < 1){ return 0; } return Long.parseLong(numbers.toString()); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpgpj.html