java判断一个字符串是否以数字开头

String str = "30年前";
我要判断该字符串是否以数字开头,如果是还要把数字单独提取出来,再赋值到一个新的String变量中,怎么写?谢谢~
另外我要把数字部分和中文部分都分解开,分别赋值到新的String变量中。
如:str1 = "30"; str2="年前";

以下是antolife给您的回答,不能保证100%正确,但可给您一个建议.谢谢!

// 正则方式
String content = "30年前";
Pattern pattern = Pattern.compile("^(\\d+)(.*)");
Matcher matcher = pattern.matcher(content);
if (matcher.matches()) {//数字开头
System.out.println(matcher.group(1));// =30
System.out.println(matcher.group(2));// =年前
}

// 简单模式
String source = "30年前";
int indexOfNum = 0;
for (; indexOfNum < source.length(); indexOfNum++) {
if (!Character.isDigit(source.charAt(indexOfNum))) {
break;
}
}
if (indexOfNum != 0) {// 数字开头
System.out.println(source.substring(0, indexOfNum));// =30
System.out.println(source.substring(indexOfNum));// =年前
}

参考资料:纯手工打造,请珍惜

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-16
你把这个方法放进你的类中,调用它就可以
如果你传的不是数字开头的,就得到一个null,否则,它会给你返回一个字符串数组,第0位是数字部分,第[1]处是字符串部分,例如:你传的是"30年前",得到的将是str[0] = "30"; str[1] = "年前"
public String[] getNumberFromString(String srcString){
if ( srcString == null || srcString.charAt(0) < 48 || srcString.chatAt(0) > 57 ) return null;
String numberStr = "";
String stringStr = "";
for ( int i = 0; i < srcString.length(); i ++ ){
if ( srcString.charAt(i) >=48 && srcString.charAt(i) <= 57 ){
numberStr += srcString.charAt(i);
}else{
stringStr = srcString.substring(i); break;
}
}
return new String[]{ numberStr , stringStr };
}
第2个回答  2012-04-16
String.substring(beg,end);可以截取字符串,你可以一个一个截取出来,然后试着转换成整数与0~9比较,成功就把它转到另一个字符串中,依次进行
第3个回答  2012-04-16
用ascii码
public static boolean isNumeric(String str){
int chr=str.charAt(0);
if(chr<48 || chr>57)
return false;
}
return true;
}

判断一下不久好了呀,如果是数字把数字提取出来""+“‘拼成字符串然后其他一样的做法
相似回答