public int getCount(String str,String sign){
//查找某一字符串中str,特定子串s的出现次数
if(str==null) return 0;
StringTokenizer s=new StringTokenizer(str,sign);
return s.countTokens();
}
public String[] getArray(String str,String sign){
//按特定子串s为标记,将子串截成数组。
int count=getCount(str,sign);
int j=0;
String[] arr=new String[count];
for(int i=0;i<count;i++){
if(str.indexOf(sign)!=-1){
j =str.indexOf(sign);
arr[i]=str.substring(0,j);
str =str.substring(j+1);
}else{
arr[i]=str;
}
}
return arr;
}
public String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此字符串。SPLIT参数支持正则表达式, s.split("//|+");//以|或多个|做为分割符号分割字符串,如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。 split(String regex)中将默认第二个参数为0,会取消掉最后的空字符串。 public class SplitTest { public static void main(String[] args) { String[] num = null; //这里不用创建数组,split 方法会帮你创建大小合适的数组 String sLine="101494|360103660318444|2008/06/17|周润英|1292.0|3085.76|2778.28|912.91|106.0|||"; num = sLine.split("//|", -1); for (int i = 0; i < num.length; ++i) { System.out.println(i + ": " + num[i]); }}} 结果 0: 101494 1: 360103660318444 2: 2008/06/17 3: 周润英 4: 1292.0 5: 3085.76 6: 2778.28 7: 912.91 8: 106.0 9: 10: 11: public static String[] Split(String str, String sp) {// str要分割的字符串; sp分隔符;return 分割后的字符串;
StringTokenizer st = new StringTokenizer(str, sp);
String strSplit[];
try {
int stLength=st.countTokens();//获取分割后的数量
if(stLength<=1) { return null; }
strSplit=new String[stLength];
int i=0;
while (st.hasMoreTokens()) {
strSplit[i]=st.nextToken().toString();
i++;
} }
catch(Exception e) { return null; }
return strSplit;
}