0

変な質問だと思います。だからここに私の分割があります:

String s = "asd#asd";
String[] raw1 = s.split("#"); // this has size of two raw[0] = raw[1] = "asd"

でも、

String s = "asd$asd";
String[] raw2 = s.split("$"); // this has size of ONE

raw2 は分割されません。誰かが理由を知っていますか?

4

4 に答える 4

5

はregexpsplit()を取り、行末を示します。実際には正規表現のメタ文字である文字で分割する必要がある場合は、それをエスケープする必要があります。$

正規表現のメタ文字については、パターンを参照してください。

StringTokenizerの方がニーズに適している場合があります。これは、分割する必要がある文字のリストを取得し、それらを正規表現のメタ文字として解釈しません。ただし、もう少し冗長で使いにくいです。Nandkumar が以下に記しているように、最新のドキュメントには、新しいコードでは推奨されないと記載されています。

于 2012-08-09T09:00:35.867 に答える
3

あなたはそれをエスケープする必要があります:

String s = "asd$asd";
String[] raw2 = s.split("\\$"); // this has size of TWO
于 2012-08-09T09:00:14.653 に答える
3

split()正規表現を取り、$行末に一致するためです。

あなたはそれをエスケープする必要があります:

s.split("\\$");

正規表現の詳細については、パターンのドキュメントを参照してください。

于 2012-08-09T09:01:03.187 に答える
1

特殊文字をエスケープする必要があります。

s.split("\\$"); 
于 2012-08-09T09:00:26.897 に答える