使用split(“|”)通过pipe道符号分割Javastring
Java官方文档指出:
例如,string"boo:and:foo"
用这些expression式产生以下结果正则expression式结果:
{ "boo", "and", "foo" }"
这就是我需要它工作的方式。 但是,如果我运行这个:
public static void main(String[] args){ String test = "A|B|C||D"; String[] result = test.split("|"); for(String s : result){ System.out.println(">"+s+"<"); } }
它打印:
>< >A< >|< >B< >|< >C< >|< >|< >D<
这与我所期望的相差甚远:
>A< >B< >C< >< >D<
为什么发生这种情况?
提前致谢
你需要
test.split("\\|");
split
使用正则expression式,并在正则expression式 |
是代表OR
运算符的元字符。 您需要使用\
转义该字符(由于\
也是string中的元字符,并且需要另外的\
来转义它),所以用String写成"\\"
。
你也可以使用
test.split(Pattern.quote("|"));
并让Pattern.quote
创build代表|
的正则expression式的转义版本 。
使用正确的转义: string.split("\\|")
或者为此目的而创build的Helper Pattern.quote()
:
string.split(Pattern.quote("|"))
它可以使用任意的inputstring。 当你需要引用/转义用户input时非常有用。
使用此代码:
public static void main(String[] args) { String test = "A|B|C||D"; String[] result = test.split("\\|"); for (String s : result) { System.out.println(">" + s + "<"); } }
您也可以使用.split("[|]")
。
(我用这个而不是.split("\\|")
,这对我不起作用。)
你也可以使用Apache库,并执行此操作:
StringUtils.split(test, "|");
split()方法将正则expression式作为参数