String str = "^2^3da42b3中文sae34科e技b2报2`~!@#$%^&*()_+-=[]{};':\",.<>/?\\93飞";
str = str.replaceAll("[^0-9\\u4e00-\\u9fa5]", "");
System.out.println(str);
数字应该比较容易,中文的话也是有编码范围的,例如在Unicode编码中好像为4e00~9fa5(不确定)。所以我想你只需要扫描每个字符,判断其编码是否在对应区间就可以了。
用正则表达式来做,代码自己在网上找下。很多