1 String类提供的方法:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package测试练习;importJava.util.*;publicclassget_StringNum {/** *2016.10.25 */publicstaticvoidmain(String[] args) {String str = "love23next234csdn3423javaeye";str=str.trim();String str2="";if(str != null&& !"".equals(str)){for(inti=0;i<str.length();i++){if(str.charAt(i)>=48&& str.charAt(i)<=57){str2+=str.charAt(i);}}}System.out.println(str2);}}output:232343423 | 
这个方法有个明显的缺点,只能把数字全部提取到一起,不能分别提取。当然也可以改进,有兴趣的朋友可以试试。
2 正则表达式
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | importjava.util.*;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassget_StringNum {/** *2016.10.25 */publicstaticvoidmain(String[] args) {String a="love23next234csdn3423javaeye";String regEx="[^0-9]";  Pattern p = Pattern.compile(regEx);  Matcher m = p.matcher(a);  System.out.println( m.replaceAll("").trim());}}output:232343423 | 
Pattern ,Matcher是java.util.regex软件包里的两个类,具体用法大家可以查阅一下api。同样也不能单个提取数字。
3 集合类库
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | importjava.util.*;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassget_StringNum {/** *2016.10.25 */publicstaticvoidmain(String[] args) {  String a="love23next234csdn3423javaeye";List<String> digitList = newArrayList<String>();Pattern p = Pattern.compile("[^0-9]");Matcher m = p.matcher(a);String result = m.replaceAll("");for(inti = 0; i < result.length(); i++) {digitList.add(result.substring(i, i+1));}System.out.println(digitList);}}output:[2, 3, 2, 3, 4, 3, 4, 2, 3] | 
相同的思路:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | importjava.util.*;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassget_StringNum {/** *2016.10.25 */publicstaticvoidmain(String[] args) {        String a="love23next234csdn3423javaeye";    List<String> ss = newArrayList<String>();    for(String sss:s.replaceAll("[^0-9]", ",").split(",")){      if(sss.length()>0)        ss.add(sss);    }    System.out.print(ss);}}output:[2, 3, 2, 3, 4, 3, 4, 2, 3] | 
很明显,利用正则表达式我们就可以分别提取数字了。
另外还有一个利用查阅文档找出的答案,如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | /** * 从字符串文本中获得数字 *@param text *@return */ publicstatic List<Long> getDigit(String text) { List<Long> digitList =new ArrayList<Long>(); Pattern p= Pattern.compile("(\\d+)"); Matcher m= p.matcher(text); while (m.find()) { String find= m.group(1).toString(); digitList.add(Long.valueOf(find)); }return digitList; } | 
两个用正则表达式匹配的判断方法,如下;
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // 判断一个字符串是否都为数字 publicbooleanisDigit(String strNum) {   returnstrNum.matches("[0-9]{1,}"); }  // 判断一个字符串是否都为数字 publicbooleanisDigit(String strNum) {   Pattern pattern = Pattern.compile("[0-9]{1,}");   Matcher matcher = pattern.matcher((CharSequence) strNum);   returnmatcher.matches(); }    //截取数字   publicString getNumbers(String content) {     Pattern pattern = Pattern.compile("\\d+");     Matcher matcher = pattern.matcher(content);     while(matcher.find()) {       returnmatcher.group(0);     }     return"";   }  // 截取非数字 publicString splitNotNumber(String content) {   Pattern pattern = Pattern.compile("\\D+");   Matcher matcher = pattern.matcher(content);   while(matcher.find()) {     returnmatcher.group(0);   }   return""; }  | 
