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("\\^");

此外,^正则表达式中的保留字符。但是,您曾经[]escape也意味着括号内的内容。|^[]

于 2012-11-09T23:07:48.083 回答
1

双重逃脱克拉:

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

Java的一次转义,然后是regex的另一种转义。

于 2012-11-09T23:08:34.480 回答
0

请注意: String#split,接受正则表达式参数:

  public String[] split(String regex)

^是正则表达式中的特殊字符,表示行首。要将其用作文字,请在其之前使用转义字符,例如:

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

我也认为,它应该可以在没有大括号的情况下正常工作,例如

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

您可以在此处找到有关正则表达式字符类的更多信息:Regex Char Classes

于 2012-11-09T23:12:28.787 回答