2012-03-06 7 views
2

私は、ユーザーが文章を入力し、それに続いてプログラムを作成して、ストリングをサブストリングに分割します。文字列をサブストリングに分割する、Android

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ループは、アプリが無限ループに入る原因となるようです。何か案は?それが一つ以上を検出したどこ

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

正規表現が文章にテキストを分割します:私はあなたがこのためString.split方法を使用することができると思います

words = text.split(" "); 
+1

String配列を文字列arraylistで置き換える必要があります。 500文字列の配列を作成することはあまり効率的ではありません。一方、Arraylistsは動的であり、ニーズに合わせて成長することができます。 – Andreas

答えて

5

+0

このようなシンプルな分割に正規表現を使用することは、少し過剰なようです。 – Aidiakapi

+0

@Aidiakapi:そうであれば、OPは単純に 'text.split(" ");'で置き換えることができます。 – npinti

+0

はい、彼はそうすることができますが、この答えは彼に言っていません。 – Aidiakapi

4

使用このスペース文字。

thisページによると、StringTokenizerはString.splitに置き換えられました。

1
String[] words = text.split(" "); 
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++; 
    } 

これは私があなたのコードをコピーして、少し変更して実行し、それがうまく働いたものです。

+0

コンピュータで正常に動作しますが、Android携帯では動作しません。無限ループが発生します – TomSelleck

関連する問題