37

重複の可能性:
文字列をスペースで分割する方法

テキストファイルの解析中に助けが必要です。テキストファイルには、次のようなデータが含まれています

This is     different type   of file.
Can not split  it    using ' '(white space)

私の問題は、単語間のスペースが似ていないことです。単一のスペースがある場合もあれば、複数のスペースが指定されている場合もあります。

スペースではなく単語のみを取得するように文字列を分割する必要があります。

4

7 に答える 7

78

str.split("\\s+")動作します。正規表現の+最後にあるは、複数のスペースを単一のスペースと同じように扱います。String[]結果なしで文字列の配列()を返します" "

于 2012-10-26T05:58:18.107 に答える
23

Quantifiers分割するスペースの数を指定するために使用できます。-

    `+` - Represents 1 or more
    `*` - Represents 0 or more
    `?` - Represents 0 or 1
`{n,m}` - Represents n to m

したがって、\\s+文字列をone or moreスペースで分割します

String[] words = yourString.split("\\s+");

また、特定の数値を指定する場合は、次の範囲を指定できます{}

yourString.split("\\s{3,6}"); // Split String on 3 to 6 spaces
于 2012-10-26T05:59:05.420 に答える
6

正規表現を使用します。

String[] words = str.split("\\s+");
于 2012-10-26T05:58:33.223 に答える
5

正規表現パターンを使用できます

public static void main(String[] args)
{
    String s="This is     different type   of file.";
    String s1[]=s.split("[ ]+");
    for(int i=0;i<s1.length;i++)
    {
        System.out.println(s1[i]);
    }
}

出力

This
is
different
type
of
file.
于 2012-10-26T06:00:43.813 に答える
0
String spliter="\\s+";
String[] temp;
temp=mystring.split(spliter);
于 2012-10-26T06:15:54.177 に答える
0


StringクラスのreplaceAll(String regex、String replace)メソッドを使用して、複数のスペースをスペースに置き換えてから、splitメソッドを使用できます。

于 2012-10-26T06:00:20.473 に答える
0

分割メソッドを使用したくない場合は、文字列をトッケン化する別のメソッドを提供します。メソッドは次のとおりです。

public static void main(String args[]) throws Exception
{
    String str="This is     different type   of file.Can not split  it    using ' '(white space)";
    StringTokenizer st = new StringTokenizer(str, " "); 
    while(st.hasMoreElements())
    System.out.println(st.nextToken());
}
 }
于 2012-10-26T06:23:25.113 に答える