Cyh的博客

Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220

使用StringTokenizer

Posted on 2009-12-11 23:39 啥都写点 阅读(552) 评论(0)  编辑  收藏 所属分类: J2SE
  StringTokenizer类的使用,使用它可以把字符串分解成多个标记,和String的split方法功能相似。

  构造一个StringTokenizer对象时,需要制定三个参数:待分解的字符串、分解时用的分隔符(单个字符或者是字符串)、是否把分隔符当做标记(默认为false)。
  StringTokenizer 的 hasMoreTokens方法判断字符串中是否还有更多的可用标记。
  StringTokenizer 的  nextToken方法返回下一个标记。

/**------------------------------------UsingStringTokenizer.java----------------------------------------*/

/**
 * StringTokenizer主要用来根据分隔符来分割字符串。
 
*/

public class UsingStringTokenizer {

    
/**默认分隔符*/
    
public final static String DELIM = ",";
    
    
public static String[] process(String line){
        
return process(line, DELIM, false);
    }


    
public static String[] process(String line, String delim){
        
return process(line, delim, false);
    }

    
/**
     * 用StringTokenizer分割字符串
     * 
@param line    待分割的字符串
     * 
@param delim    分割符
     * 
@param returnDelims    是否返回分隔符,默认为false。
     * 
@param maxfields 分割后的最大的段数
     * 
@return        被分割后的字符串数组
     
*/

    
public static String[] process(String line, String delim, boolean returnDelims) {

        List results 
= new ArrayList();
        
//新建一个StringTokenizer对象
        StringTokenizer st = new StringTokenizer(line, delim, returnDelims);
        
//循环,如果字符串中还有分隔符,则继续
        while (st.hasMoreTokens()) {
            
//取上一个分隔符到下一个分隔符之间的字符串
            String s = st.nextToken();
            
//将中间的字符串添加到结果列表中
            results.add(s);
        }

        
return (String[])results.toArray(new String[0]);
    }

    
/**
     * 输出分割结果
     * 
@param input
     * 
@param outputs
     
*/

    
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""|"true));
        printResults(
"A|||D|E", process("A|||D|E""|"false));
        printResults(
"A;bD;|E;FG", process("A;bD;|E;FG"";"));
        printResults(
"A;bD;|E;FG;dfxxf;ert", process("A;bD;|E;FG;dfxxf;ert"";"false));
    }

}



                                                                                                       --    学海无涯