Разбейте строку на подстроки, Android - PullRequest
2 голосов
/ 06 марта 2012

Я делаю программу, в которой пользователь вводит предложение, и после этого приложение разбивает строку на подстроки, где пробелы и разделяют исходную строку.

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++;
     }
}

Iпока что есть этот код, и хотя он отлично работает как обычная Java-программа, цикл while, кажется, заставляет приложение идти в бесконечный цикл.Есть идеи?

Ответы [ 5 ]

5 голосов
/ 06 марта 2012

Я думаю, что вы можете использовать метод 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.
}

Регулярное выражение будет разбивать текст на предложения, где бы он ни встречался с одним или несколькими пробелами.

Согласно этой странице StringTokenizer был заменен на String.split.

4 голосов
/ 06 марта 2012

Используйте это:

words = text.split(" ");
1 голос
/ 06 марта 2012

Используйте 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

1 голос
/ 06 марта 2012
String[] words = text.split(" ");
0 голосов
/ 06 марта 2012
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++;
     }

Это то, что я скопировал и выполнил, изменив немного, и он работал нормально.

...