回答:
の何か
myString.split("\\s+");
これにより、すべての空白が区切り文字としてグループ化されます。
だから私が文字列を持っている場合:
"Hello[space][tab]World"
これは、文字列が得られるはず"Hello"
と"World"
の間の空きスペースを省略[space]
して[tab]
。
VonCが指摘したように、Javaは最初に文字列を特殊文字にエスケープして、解析するために送信するため、バックスラッシュはエスケープする必要があります。あなたが望むのは、リテラル"\s"
です"\\s"
。つまり、渡す必要があります。少し混乱することがあります。
\\s
と等価です[ \\t\\n\\x0B\\f\\r]
。
trim()
最初に行う必要があることに注意してくださいtrim().split("\\s++")
。-それ以外の場合、たとえば、 `abc`を分割すると、2つの空の文字列が最初に出力されます。
"\\\\s"
?
ほとんどの正規表現の方言には、この種のものに使用できる便利な文字要約のセットがあります。これらは覚えておくとよいものです。
\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
Apache Commons Langには、空白文字を区切り文字として文字列を分割する方法があります。
StringUtils.split("abc def")
これは正規表現パターンよりも使いやすいかもしれません。
次のステートメントを使用して、改行によって文字列を分割できます。
String textStr[] = yourString.split("\\r?\\n");
次のステートメントを使用して、空白で文字列を分割できます。
String textStr[] = yourString.split("\\s+");
このコードを研究してください。
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);
}
}
}