如何从java中的string中删除非数字字符?

我有一个很长的string。 什么是正则expression式将数字拆分到数组中?

你正在消除还是分裂? 这将删除所有的非数字字符。

myStr = myStr.replaceAll( "[^\\d]", "" ) 

从string中删除所有非数字字符的另一种方法是:

 String newString = oldString.replaceAll("[^0-9]", ""); 
 String.split("\\D+") 

你将要使用String类的Split()方法,并传递一个正则expression式“\ D +”,它将至less匹配一个非数字。

 myString.split("\\D+"); 

另一个正则expression式解决scheme

 string.replace(/\D/g,''); 

Java 8集合stream :

 StringBuilder sb = new StringBuilder(); test.chars().mapToObj(i -> (char) i).filter(Character::isDigit).forEach(sb::append); System.out.println(sb.toString()); 

这在Flex SDK 4.14.0中可用

myString.replace(/ [^ 0-9 && ^。] / g,“”);

你可以使用下面的recursion方法:

 public static String getAllNumbersFromString(String input) { if (input == null || input.length() == 0) { return ""; } char c = input.charAt(input.length() - 1); String newinput = input.substring(0, input.length() - 1); if (c >= '0' && c<= '9') { return getAllNumbersFromString(newinput) + c; } else { return getAllNumbersFromString(newinput); } } 

简单的方法,而不使用正则expression式:

 public static String getOnlyNumerics(String str) { if (str == null) { return null; } StringBuffer strBuff = new StringBuffer(); char c; for (int i = 0; i < str.length() ; i++) { c = str.charAt(i); if (Character.isDigit(c)) { strBuff.append(c); } } return strBuff.toString(); }