0
Str = "abc|def|ghi^jkl|mno";
String[] Flds = Str.split("[|]"); 
//Flds[0] = "abc";
//Flds[1] = "def";
//Flds[2] = "ghi^jkl";
//Flds[3] = "mno";

Flds [2]のサブフィールドを知りたいのですが、次のどれも機能していません-

String[] Flds = Str.split("[^]");

String[] Flds = Str.split("[^]]");

String[] Flds = Str.split("^");
4

3 に答える 3

5

分裂するべきだFlds[2]

String[] subFlds2 = Flds[2].split("\\^");

また、正規表現^の予約文字です。以前はエスケープしていましたが、括弧内の何かも意味します。[]|^[]

于 2012-11-09T23:07:48.083 に答える
1

カラットをダブルエスケープします。

Flds[2].split("\\^")

Javaの1 つのエスケープ、次にregexの別のエスケープ。

于 2012-11-09T23:08:34.480 に答える
0

注意: String#splitは、正規表現であるパラメーターを受け入れます。

  public String[] split(String regex)

^は正規表現の特殊文字で、行の先頭を意味します。リテラルとして使用するには、その前にエスケープ文字を使用してください。例:以下のとおりです。

String[] Flds = Str.split("[\\^]");

また、中かっこがなくても問題なく動作するはずです。

String[] Flds = Str.split("\\^");

正規表現の文字クラスの詳細については、RegexCharClassesを参照してください。

于 2012-11-09T23:12:28.787 に答える