第1个回答 2009-08-13
可以用正则表达式分开,:
public class A
{
public static void main(String[] args)
{
A a = new A();
String s="sasfsadfsf12fasf45d8sfs";
System.out.println("数字 = >"+a.getSz(s));
System.out.println("字符 = >"+a.getZf(s));
}
private String getSz(String str){
return str.replaceAll("[a-zA-Z]","");
}
private String getZf(String str){
return str.replaceAll("[0-9]","");
}
}
第2个回答 2009-08-13
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public abstract class TestString {
public static void main(String[] args) {
String s = "xinwen32";
StringBuffer sbuffer = new StringBuffer();
StringBuffer nbuffer = new StringBuffer();
try {
Pattern pattern = Pattern.compile("[0-9]");// [A-Z]");
Matcher m = pattern.matcher(s);
System.out.println(m.toString() + "--");
char[] chars = s.toCharArray();
String str = null;
for (char c : chars) {
str = String.valueOf(c);
m = pattern.matcher(str);
if (m.matches()) {
nbuffer.append(str);
} else {
sbuffer.append(str);
}
}
System.out.println(s + "---getStr---" + sbuffer.toString() + "--getNum---" + nbuffer);
} catch (Exception ioEx) {
ioEx.printStackTrace();
}
}
}
大家的速度好快,我刚刚写完。
试试。
第3个回答 2009-08-13
不需要写函数.
1.获得xinwen:s.replaceAll("\\d", "")
2.获得32:s.replaceAll("\\D", "")
你可以打印出来看看就知道了!
第4个回答 2009-08-13
字符一个一个取出来比较一下ASCII码值不就可以了?数字0-9的ASCII码值是48-57。不是这个范围内的说名就不是数字了呗