5

私の先生は、 を使わずに文を単語に分割することを特に要求しましたString.split()Vector(まだ学習していません)、ループ、部分文字列を使用して実行しましたwhile。これを達成する他の方法は何ですか?(できればVectors/を使用しないでArrayListsください)。

4

15 に答える 15

13

先生は文字列を自分で処理するように求めていると思います (他のライブラリを使用せずに)。これが当てはまるかどうかを確認します。使用できる場合は、文字列処理を容易にする StringTokenizer、Pattern、Scanner などがあります。

さもないと...

単語の区切り記号 (スペース、タブ、ピリオドなど) のリストが必要になります。次に配列を調べて、単語の区切り記号に到達するまで一度に 1 文字ずつ文字列を作成します。完全な単語を見つけた後 (単語区切り文字に遭遇した場合)、変数を構造体 (または必要なもの) に保存し、単語を作成している変数をリセットして続行します。

于 2012-05-07T17:13:29.653 に答える
4

文字列を文字ごとに解析し、各文字を新しい文字列にコピーし、空白文字に到達すると停止します。次に、新しい文字列を開始し、元の文字列の最後に到達するまで続行します。

于 2012-05-07T17:09:10.333 に答える
3

java.util.StringTokenizerを使用して、目的の区切り文字を使用してテキストを分割できます。デフォルトの区切り文字はSPACE/TAB/NEW_LINEです。

String myTextToBeSplit = "This is the text to be split into words.";  
StringTokenizer tokenizer = new StringTokenizer( myTextToBeSplit );  
while ( tokinizer.hasMoreTokens()) {  
    String word = tokinizer.nextToken();  
    System.out.println( word ); // word you are looking in  
}  

別の方法として、 java.util.Scannerを使用することもできます

Scanner s = new Scanner(myTextToBeSplit).useDelimiter("\\s");  
while( s.hasNext() ) {  
System.out.println(s.next());  
}  
s.close();  
于 2012-05-07T17:14:37.377 に答える
2

java.util.Scannerを使用できます。

于 2012-05-07T17:08:46.363 に答える
1

StringTokenizerhttp://www.java-samples.com/showtutorial.php?tutorialid=236を使用でき ます

于 2012-05-07T17:07:07.890 に答える
1

または、Pattern(正規表現とも呼ばれます)を使用して単語を一致させます。

于 2012-05-07T17:09:07.290 に答える
1
public class sha1 {
public static void main(String[] args) {
    String s = "hello java how do you do";
    System.out.println(Arrays.toString(sha1.split(s)));
}
public static String[] split(String s) {
    int count = 0;
    char[] c = s.toCharArray();

    for (int i = 0; i < c.length; i++) {
        if (c[i] == ' ') {
            count++;
        }
    }
    String temp = "";
    int k = 0;
    String[] rev = new String[count + 1];
    for (int i = c.length-1; i >= 0; i--) {
        if (c[i] == ' ') {
            rev[k++] = temp;
            temp = "";
        } else
            temp = temp + c[i];
    }
    rev[k] = temp;
    return rev;
}

}

于 2016-10-14T07:04:47.083 に答える
1

Vector/を使用Listせずに (また、関数に合わせてサイズを変更する機能を手動で再実装しなくても)、長さの文字列は(整数除算で) 単語Nを超えてはならないという単純な観察を利用できます。(N+1)/2そのサイズの文字列の配列を宣言し、それを入力したのと同じ方法で入力しVector、結果を見つけた単語数のサイズの配列にコピーできます。

そう:

String[] mySplit( String in ){
    String[] bigArray = new String[ (in.length()+1)/2 ];

    int numWords = 0;
    // Populate bigArray with your while loop and keep
    // track of the number of words

    String[] result = new String[numWords];
    // Copy results from bigArray to result

    return result;
}
于 2012-05-07T21:39:06.607 に答える
1
  • ctor (文字列) でスキャナーを使用する
  • 正規表現と一致
  • StringTokenizer
  • 文字ごとに自分自身を繰り返す
  • 再帰的反復
于 2012-05-07T17:13:27.523 に答える
-3

String.substringまたはも使用できますcharAt[]

于 2012-05-07T17:44:01.777 に答える