573

すべての空白文字 ( 、、など) を区切り文字としてjava.lang.String.split() 使用して、文字列を部分文字列の配列に分割するには、どの正規表現パターンを渡す必要があり ますか?' ''\t''\n'

4

14 に答える 14

982

の行の何か

myString.split("\\s+");

これにより、すべての空白が区切り文字としてグループ化されます。

したがって、文字列がある場合:

"Hello[space character][tab character]World"

これにより、文字列"Hello"とが生成され、と の"World"間の空白が省略されます。[space][tab]

VonC が指摘したように、バックスラッシュはエスケープする必要があります。これは、Java が最初に文字列を特殊文字にエスケープしようとし、それを送信て解析するためです。必要なのはリテラルです。"\s"つまり、渡す必要があります"\\s"。少し混乱する可能性があります。

\\sと同等[ \\t\\n\\x0B\\f\\r]です。

于 2008-10-22T11:31:11.640 に答える
91

ほとんどの正規表現方言には、この種のものに使用できる一連の便利な文字要約があります - これらは覚えておくとよいものです:

\w- 任意の単語文字に一致します。

\W- 単語以外の任意の文字に一致します。

\s- 任意の空白文字に一致します。

\S- 空白文字以外に一致します。

\d- 任意の数字に一致します。

\D- 数字以外のすべてに一致します。

「Regex Cheatsheets」を検索すると、役立つ要約がたくさん出てくるはずです。

于 2008-10-22T11:30:37.430 に答える
68

これをJavascriptで機能させるには、次のことを行う必要がありました。

myString.split(/\s+/g)
于 2012-03-01T22:18:11.040 に答える
38

「\\s+」でうまくいくはずです

于 2008-10-22T11:29:25.247 に答える
12

また、UniCode 改行なしのスペース xA0 があるかもしれません...

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
于 2014-09-09T03:29:23.780 に答える
10
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
于 2016-03-31T18:14:14.643 に答える
2

必要なのは、Java Ragex Engine の特殊文字の 1 つを使用して分割することだけです。

そしてそれは- ホワイトスペース文字

  • \d 数字を表します:[0-9]
  • \D 数字以外を表します:[^0-9]
  • \sを 含む空白文字を表します[ \t\n\x0B\f\r]
  • \S 非空白文字を次のように表します。[^\s]
  • \v 垂直空白文字を次のように表します。[\n\x0B\f\r\x85\u2028\u2029]
  • \V 非垂直空白文字を次のように表します。[^\v]
  • \w 単語の文字を次のように表します[a-zA-Z_0-9]
  • \W 非単語文字を次のように表します。[^\w]

ここで覚えておくべき重要な点は、小文字文字は、単一のスペース、タブ文字、または類似のもの\sを含むすべてのタイプの空白を表すということです。[ ][ ]

だから、あなたがしようとすると、このようなものになります-

String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");

目的の出力が得られます。


非常に便利なリンク:


うまくいけば、これがあなたの助けになるかもしれません!!!

于 2021-01-21T21:35:19.120 に答える
2

これは正規表現であるため、空白で囲まれる可能性のあるコンマ、ドットなどの英数字以外の文字も必要ないと想定しています(たとえば、「1、2」は[1] [2]を与える必要があります)、そのはず:

myString.split(/[\s\W]+/)
于 2012-02-14T09:01:22.270 に答える
1

次のステートメントを使用して、改行で文字列を分割できます。

 String textStr[] = yourString.split("\\r?\\n");

次のステートメントを使用して、文字列を空白で分割できます。

String textStr[] = yourString.split("\\s+");
于 2014-09-01T13:40:50.347 に答える
0

たとえば、タブではなく空白で分割したい場合は、次を使用できます。

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

textline: "最初の単語のタブを\t無視"

words: [igno\tre, the, tab, in, the, first, word]

于 2021-09-09T07:11:43.860 に答える
-1

このコードを勉強してください..頑張ってください

    import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);

        } 
    }
}
于 2016-10-24T14:08:00.437 に答える