将字符串分解为子字符串,Android

时间:2012-03-06 12:22:52

标签: java android string stringtokenizer

我正在创建一个程序,让用户输入一个句子,然后,应用程序会将String分解为子字符串,其中空格是破坏原始字符串的。

import java.util.StringTokenizer;


    public class whitespace {

    public static void main(String[] args) {

    String text = "supervisors signature tom hanks";
    int tokenCount; //number of words
    int idx=0; // index
    String words[]=new String [500]; // space for words


     StringTokenizer st=new StringTokenizer(text); // split text into segements
     tokenCount=st.countTokens(); 
     while (st.hasMoreTokens()) // is there stuff to get?
     {
         words[idx]=st.nextToken();
         idx++;
     }
}

到目前为止我有这个代码,虽然它作为常规Java程序工作正常,但while循环似乎会导致应用程序进入无限循环。有什么想法吗?

5 个答案:

答案 0 :(得分:5)

我认为你可以使用String.split方法:

String text = "supervisors signature tom hanks";
String[] tokens = text.split("\\s+");
for (String str : tokens)
{
    //Do what you need with your tokens here.
}

正则表达式会在遇到一个或多个空格字符时将文本拆分为句子。

根据this页面,StringTokenizer已被String.split替换。

答案 1 :(得分:4)

使用此:

words = text.split(" ");

答案 2 :(得分:1)

String[] words = text.split(" ");

答案 3 :(得分:1)

使用Apache StrTokenizer

StrTokenizer strTok = new StrTokenizer(text);
String[] strList = strTok.getTokenArray();

http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/text/StrTokenizer.html

答案 4 :(得分:0)

StringTokenizer sta=new StringTokenizer(text); // split text into segements
     String[] words= new String[100];int idx=0;
     while (sta.hasMoreTokens()) // is there stuff to get?
     {
         words[idx]=sta.nextToken();
         System.out.println(words[idx]);
         idx++;
     }

这是我复制你的代码并通过改变一点来执行的,它工作得很好。