int num = lcoltoken.countTokens(); String[] ls_col=new String[num]; int li=0; String mid_1 = "",mid_2 = ""; boolean flag = true; System.out.println("lcoltoken num " + num);
while(lcoltoken.hasMoreTokens()){ ls_col[li]=lcoltoken.nextToken(); System.out.println("ls_col["+li+"] is " + ls_col[li]); li++; }
for(int i = 0 ; i < num; i++){ if(!ls_col[i].equals(",")){ System.out.println(ls_col[i]); i=i+1; } if(ls_col[i].equals(",") && ls_col[i+1].equals(",")) { System.out.println(""); i=i+1; }
但原字符串"a,,b,c,,d"就是这样的,我想获取出来的字符串也应当是空字符串,而不是空格啊,ls_col[1]="",不是ls_col[1]=" "
■■
StringTokenizer lcoltoken=new StringTokenizer(lrowtoken.nextToken(),",",true);
StringTokenizer lcoltoken=new StringTokenizer("a,,b,c,,d",",",true);
int num = lcoltoken.countTokens();
String[] ls_col=new String[num];
int li=0;
String mid_1 = "",mid_2 = "";
boolean flag = true;
System.out.println("lcoltoken num " + num);
while(lcoltoken.hasMoreTokens()){
ls_col[li]=lcoltoken.nextToken();
System.out.println("ls_col["+li+"] is " + ls_col[li]);
li++;
}
for(int i = 0 ; i < num; i++){
if(!ls_col[i].equals(",")){
System.out.println(ls_col[i]);
i=i+1;
}
if(ls_col[i].equals(",") && ls_col[i+1].equals(",")) {
System.out.println("");
i=i+1;
}
if(ls_col[i].equals(",") && !ls_col[i+1].equals(",")){
System.out.println(ls_col[i+1]);
i=i+2;
}
}
}
public static void main(String[] arg){
ST st = new ST();
st.Change();
}
}
import java.util.regex.*;Pattern p = Pattern.compile(",");String[] list = p.split("a,,b,c,,d");
import java.util.*;
public class ST{
StringTokenizer sourcetoken = new StringTokenizer(",,,,a,,b,h,,,c,d,",",", true);
public void Change(){
int num = sourcetoken.countTokens();
String[] los = new String[num];
int li = 0;
while(sourcetoken.hasMoreElements()){
los[li] = sourcetoken.nextToken();
System.out.println("los["+li+"] is "+los[li]);
li++;
}
System.out.println();
String[] tag = new String[num];
for(int i = 0; i < num ; i++){
if(los[i].equals(",")){
if(i+1 < num){
if(los[i+1].equals(",")){
tag[i] = "";
}else{
continue;
}
}else{
break;
}
}else{
tag[i] = los[i];
}
}
int real = 0;
for(int j = 0; j < num ; j++){
if(tag[j] != null){
los[real]=tag[j];
real++;
}
}
for(int k = 0; k < real; k++){
System.out.println("los["+k+"] is "+los[k]);
}
}
public static void main(String[] arg){
ST st = new ST();
st.Change();
}
}
从程序上看正则表达式简洁一点!
{
if(s == null)
throw new NullPointerException("source String cannot be null");
if(separator == null)
throw new NullPointerException("separator cannot be null");
if(separator.length() == 0)
throw new IllegalArgumentException("separator cannot be empty"); ArrayList tmp = new ArrayList();
int start = 0;
int separatorLen = separator.length();
int end = s.indexOf(separator);
while(end != -1)
{
tmp.add(s.substring(start, end));
start = end + separatorLen;
end = s.indexOf(separator, start);
}
tmp.add(s.substring(start, s.length()));
String[] result = new String[tmp.size()];
tmp.toArray(result);
return result;
}public static void main(String[] args)
{
String[] result = split("a,,b,c,,d", ",");
for(int i=0; i<result.length; i++)
System.out.println(result[i]);
}