您的位置:首页 > 编程语言 > Java开发

How to use String.split() to get all the separate words including the delimit (Java)

2017-12-26 17:51 357 查看
Today, I was trapped to saperate a string via different delimits while keeping the order of the words.

I tried StringTokenizer, but it is obsolete and might not be supported in later versions.

Some other references point to String.split(), but it will not preserve the delimits.

Several attempts are taken such as to overload the source split().

I found it annoying so tried a new way.

1. enrich my source string with spaces (you may do with any charactor you like), to provide extra delimits.

2. use String.split(" *") to separate the source string. Attention, the regex is formed of a space and a star.

3. enjoy your String[].

public static String prepareString(String s) throws Exception {
char[] cArray = s.toCharArray();
String result ="";
for(int i=0;i<cArray.length-1;i++){
String sTemp = ""+cArray[i];
boolean isFisrtDot = false;
if(cArray[i]>='A'&&cArray[i]<='Z'||cArray[i]>='a'&&cArray[i]<='z'){
while(cArray[i+1]>='A'&&cArray[i+1]<='Z'||cArray[i+1]>='a'&&cArray[i+1]<='z') {
sTemp+=cArray[i+1];
i++;
if(i==cArray.length-1) break;
}
}else if(cArray[i]<='9'&&cArray[i]>='0'){
while(cArray[i+1]<='9'&&cArray[i+1]>='0'||cArray[i+1]=='.'){
sTemp+=cArray[i+1];
if(cArray[i+1]=='.'&&isFisrtDot == false) isFisrtDot=true;
else if (cArray[i+1]=='.'&&isFisrtDot == true){
throw new Exception("Error: too many dots in value.");
}
i++;
if(i==cArray.length-1) break;
}
}
result+=sTemp+" ";

}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: