すべての空白文字 ( 、、など) を区切り文字としてjava.lang.String.split()
使用して、文字列を部分文字列の配列に分割するには、どの正規表現パターンを渡す必要があり ますか?' '
'\t'
'\n'
14 に答える
の行の何か
myString.split("\\s+");
これにより、すべての空白が区切り文字としてグループ化されます。
したがって、文字列がある場合:
"Hello[space character][tab character]World"
これにより、文字列"Hello"
とが生成され、と の"World"
間の空白が省略されます。[space]
[tab]
VonC が指摘したように、バックスラッシュはエスケープする必要があります。これは、Java が最初に文字列を特殊文字にエスケープしようとし、それを送信して解析するためです。必要なのはリテラルです。"\s"
つまり、渡す必要があります"\\s"
。少し混乱する可能性があります。
は\\s
と同等[ \\t\\n\\x0B\\f\\r]
です。
ほとんどの正規表現方言には、この種のものに使用できる一連の便利な文字要約があります - これらは覚えておくとよいものです:
\w
- 任意の単語文字に一致します。
\W
- 単語以外の任意の文字に一致します。
\s
- 任意の空白文字に一致します。
\S
- 空白文字以外に一致します。
\d
- 任意の数字に一致します。
\D
- 数字以外のすべてに一致します。
「Regex Cheatsheets」を検索すると、役立つ要約がたくさん出てくるはずです。
これをJavascriptで機能させるには、次のことを行う必要がありました。
myString.split(/\s+/g)
「\\s+」でうまくいくはずです
また、UniCode 改行なしのスペース xA0 があるかもしれません...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
必要なのは、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+");
目的の出力が得られます。
非常に便利なリンク:
うまくいけば、これがあなたの助けになるかもしれません!!!
これは正規表現であるため、空白で囲まれる可能性のあるコンマ、ドットなどの英数字以外の文字も必要ないと想定しています(たとえば、「1、2」は[1] [2]を与える必要があります)、そのはず:
myString.split(/[\s\W]+/)
次のステートメントを使用して、改行で文字列を分割できます。
String textStr[] = yourString.split("\\r?\\n");
次のステートメントを使用して、文字列を空白で分割できます。
String textStr[] = yourString.split("\\s+");
たとえば、タブではなく空白で分割したい場合は、次を使用できます。
String[] words = textline.split(" ");
例
textline: "最初の単語のタブを\t無視"
words: [igno\tre, the, tab, in, the, first, word]
このコードを勉強してください..頑張ってください
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);
}
}
}