您的位置:首页 > 编程语言 > Java开发

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

2010-11-05 13:42 633 查看
有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。例如,对于字符串“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]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: