空白文字を区切り文字として使用して文字列を分割するにはどうすればよいですか?
-
03-07-2019 - |
質問
すべての空白文字( ''、 '\ tを使用して文字列を部分文字列の配列に分割するために java.lang.String.split()
メソッドに渡す必要がある正規表現パターン'、' \ n 'など)を区切り文字として使用しますか?
解決
次の行の何か
myString.split("\\s+");
これは、すべての空白を区切り文字としてグループ化します。
したがって、文字列がある場合:
" Hello [space] [tab] World"
これにより、文字列" Hello"
および" World"
が生成され、 [space]
と [tab]
。
VonCが指摘したように、Javaは最初に文字列を特殊文字にエスケープしようとするため、バックスラッシュをエスケープする必要があり、解析する を送信します。必要なのはリテラルの" \ s"
です。つまり、" \\ s"
を渡す必要があります。少し混乱するかもしれません。
\\ s
は [\\ t \\ n \\ x0B \\ f \\ r]
他のヒント
ほとんどの正規表現方言には、この種のことのために使用できる便利な文字要約のセットがあります-これらは覚えておくべき良いものです:
\ w
-任意の単語文字に一致します。
\ W
-単語以外の文字と一致します。
\ s
-任意の空白文字に一致します。
\ S
-空白文字以外のものに一致します。
\ d
-任意の数字と一致します。
\ D
-数字以外のすべてに一致します。
「正規表現チートシート」の検索たくさんの便利な要約を提供する必要があります。
これを 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+");
Apache Commons Langには、区切り文字として空白文字を使用して文字列を分割する方法があります:
StringUtils.split("abc def")
これは正規表現パターンよりも使いやすいかもしれません。
これは正規表現であるため、空白で囲まれる可能性のあるコンマ、ドットなどの英数字以外の文字(たとえば" one、two"は[one] [ 2])、次のようになります。
myString.split(/[\s\W]+/)
パラメータなしでString.split()に言及している人がいないことに驚いています。それは何のために作られたのではないですか?次のように:
"abc def ghi".split()
次のステートメントを使用して、改行で文字列を分割できます:
String textStr[] = yourString.split("\\r?\\n");
次のステートメントを使用して、空白で文字列を分割できます:
String textStr[] = yourString.split("\\s+");
String str = "Hello World";
String res[] = str.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);
}
}
}