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));// =年前 }
你把这个方法放进你的类中,调用它就可以如果你传的不是数字开头的,就得到一个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 };}
用ascii码 public static boolean isNumeric(String str){ int chr=str.charAt(0); if(chr<48 || chr>57) return false;} return true; } 判断一下不久好了呀,如果是数字把数字提取出来""+“‘拼成字符串然后其他一样的做法