如果要求比较特别,或者不熟悉API
就自己写split方法呗
我看具体要求貌似是按空格分割,如果一个串中没数字,就去掉
我也不熟悉split
自己写了一个 貌似可以
public class SplitString {
public static String[] splitString(String str){
String[] arStr=new String[str.length()];//不知道最后会分成几份,但是总不会超过原来字符串的长度
int count=0;
char c;
StringBuilder sb=new StringBuilder();
boolean bNoNum=true;//这个boolean记录当前的String是不是没有数字
for(int i=0;i<str.length();i++){
c=str.charAt(i);
if(c!=' '){
if(c>='0'&&c<='9')
bNoNum=false;
sb.append(c);
}else {
if(!bNoNum){//有数字,输出到数组,count++,并且新建一个StringBuilder
arStr[count++]=sb.toString();
sb=new StringBuilder();
}else{//没有数字,不记录到数组,直接新建一个StringBuilder
sb=new StringBuilder();
}
bNoNum=true;//这个boolean要归位
}
}
//把有效部分(不是null的)重新放到一个长度匹配的数组
arStr[count++]=sb.toString();
int length=0;
for(;length<arStr.length;length++)
if(arStr[length]==null)
break;
String[] returnStr=new String[length];
for(int i=0;i<length;i++)
returnStr=arStr;
return returnStr;
}
public static void main(String[] args){
String[] s=splitString("2 1 ms 2 ms 2 ms 10.1.40.125");
for(int i=0;i<s.length;i++)
System.out.println(s);
}
}
然后就可以打印出
2
1
2
2
10.1.40.125
|