blu*_*llu 190 java regex string
Java官方文档指出:
"boo:and:foo"
例如,字符串使用这些表达式生成以下结果Regex结果:
{ "boo", "and", "foo" }"
Run Code Online (Sandbox Code Playgroud)
这就是我需要它工作的方式.但是,如果我运行这个:
public static void main(String[] args){
String test = "A|B|C||D";
String[] result = test.split("|");
for(String s : result){
System.out.println(">"+s+"<");
}
}
Run Code Online (Sandbox Code Playgroud)
它打印:
><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<
Run Code Online (Sandbox Code Playgroud)
这远非我所期望的:
>A<
>B<
>C<
><
>D<
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Jig*_*shi 411
你需要
test.split("\\|");
Run Code Online (Sandbox Code Playgroud)
split
使用正则表达式,在正则表达式中 |
是表示OR
运算符的元字符.你需要使用\
(以String编写,"\\"
因为\
它也是String文字中的元字符并且需要另一个\
来转义它)来转义该字符.
你也可以使用
test.split(Pattern.quote("|"));
Run Code Online (Sandbox Code Playgroud)
然后Pattern.quote
创建表示的正则表达式的转义版本|
.
Aar*_*lla 31
使用适当的转义: string.split("\\|")
或者Pattern.quote()
为此目的创建的帮助程序:
string.split(Pattern.quote("|"))
Run Code Online (Sandbox Code Playgroud)
它适用于任意输入字符串.当您需要引用/转义用户输入时非常有用.
小智 6
使用此代码:
public static void main(String[] args) {
String test = "A|B|C||D";
String[] result = test.split("\\|");
for (String s : result) {
System.out.println(">" + s + "<");
}
}
Run Code Online (Sandbox Code Playgroud)