java.util——使用StringTokenizer类分析字符串

来源:互联网 发布:怎么在淘宝上开外卖店 编辑:程序博客网 时间:2024/04/19 11:42

有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。例如,对于字符串“We are students”,如果我们把空格作为该字符串的分隔符,那么该字符串有三个单词,语言符号。而对于字符串“We ,are,student”如果我们把逗号作为了该字符串的分隔符,那么该字符串有三个单词,语言符号。

当我们分析一个字符串并将字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法。

·StringTokenizer (String s) 为字符串s构造一个分析器,使用默认的分隔符集合(即空格符),若干个空格被看做一个空格,换行符,回车符,Tab符,进纸符。

·StringTokenizer(String s,String delim)为字符串s构造一个分析器。参数dilim中的字符被作为分隔符。

例如:

       StringTokenizer fenxi=new StringTokenizer("we are student");

       StringTokenizer fenxi=new StringTokenizer("we,are,student",",;");

   我们把一个StringTokenizer对象称作一个字符串分析器。一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号。通常用while循环来逐个获取语言符号,为了控制循环,我们可以使用StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有语言符号,该方法就返回true,否则返回false。另外我们还可以调用countTokens()方法得到字符串一共有多少个语言符号。

下面是一个应用程序,分析字符串,分别输出字符串的单词,并统计单词个数。

例子7:

           import java.util.*;

           public class Example5_7

               {

                   public static void main(String args[])

                           {

                                  String s="I am Geng.X.y,she is my girlfriend";

                                  StringTokenizer fenxi=new StringTokenizer(s,","); //空格和逗号做分

                                  int number=fenxi.countTokens();

                                  while(fenxi.hasMoreTokens())

                                       {

                                            String str=fenxi.nextToken();

                                            System.out.println(str);

                                            System.out.println("还剩"+fenxi.countTokens()+"个单词");

                                       }

                   System.out.println("s共有单词"+number+"个");

                           }

               }

 

附加一个经典编程题:

/**********************************
现在输入n个数字,以逗号分开;然后升或者降序排序;
***********************************/
import java.util.*;
public class bycomma{

public static String[] splitStringByComma(String source){
 if(source==null||source.trim().equals(""))
  return null;
 StringTokenizer commaToker = new StringTokenizer(source,","); 
 String[] result = new String[commaToker.countTokens()]; //
 int i=0;
 while(commaToker.hasMoreTokens()){ 

  result[i] = commaToker.nextToken(); 
  i++;
 }
 return result;
}

public static void main(String args[]){
 String[] s = splitStringByComma("5,8,7,4,3,9,1");
 int[] ii = new int[s.length];

 for(int i = 0;i<s.length;i++){
  ii[i] =Integer.parseInt(s[i]);
 }
 Arrays.sort(ii);

 //asc 由小到大
 for(int i=0;i<s.length;i++){
  System.out.println(ii[i]); 
 }
 System.out.println("/n");
 //desc 由大到小
 for(int i=(s.length-1);i>=0;i--){
  System.out.println(ii[i]);
 }
}
}

原创粉丝点击