StringTokenizer st=new StringTokenizer("dfs,fd,dfd,fd",",");
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
* 创建日期 2003-12-24
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com;/**
* @author Administrator
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/import java.util.*; /** 使用 StringTokenizer 类 */
public class StringSplit {
public final static int MAXFIELDS = 150;
public final static String DELIM = ",";
/** 处理一个字符串,返回一个由各字段组成的数组 */
public static String[] process(String line) {
//System.out.println("待拆分的String为:"+line);
String[] results = new String[MAXFIELDS];
// 除非你要求StringTokenizer类,否则它会丢弃许多null标记
StringTokenizer st = new StringTokenizer(line, DELIM, true);
int i = 0;
// 获得每个token
while (st.hasMoreTokens()) {
String s = st.nextToken();
if (s.equals(DELIM)) {
if (i++ >= MAXFIELDS)
// 这有些乱:参照StrTokKemo4b,它使用一个Vector
// 允许任何数量的字段
throw new IllegalArgumentException(
"Input line " + line + " has too many fields");
continue;
}
results[i] = s;
}
int Arrlen=1;
for(int m=0;m<MAXFIELDS;m++){
if (results[m]==null){
Arrlen=m;
break;
}
}
if (Arrlen<1){
Arrlen=1;
}
String[] res=new String[Arrlen];
if (Arrlen<2){
res[0]=line;
}else{
for(int k=0;k<Arrlen;k++){
res[k]=new String(results[k]);
}
}
results=null;
return res;
}
public static void printResults(String input, String[] outputs) {
System.out.println("Input: " + input);
for (int i = 0; i < outputs.length; i++)
System.out.println("Output " + i + " was: " + outputs[i]);
}
public static void main(String[] a) {
printResults("A,B,C,D", process("A,B,C,D"));
printResults("A||C|D", process("A||C|D"));
printResults("A|||D|E", process("A|||D|E"));
}
}