Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以管道符号作为分隔符拆分字符串_Java_String_Split - Fatal编程技术网

Java 以管道符号作为分隔符拆分字符串

Java 以管道符号作为分隔符拆分字符串,java,string,split,Java,String,Split,为什么在下面的例子中,输出是[],而不是[1] String input="1|2|3"; String[] values= input.split("|"); System.out.println("[" + values[0] + "]"); // Output: [] 但是,如果我们更改分隔符,则输出为[1] String input="1;2;3"; String[] values= input.split(";"); System.out.println("[" + values[0

为什么在下面的例子中,输出是
[]
,而不是
[1]

String input="1|2|3";
String[] values= input.split("|");
System.out.println("[" + values[0] + "]");
// Output: []
但是,如果我们更改分隔符,则输出为
[1]

String input="1;2;3";
String[] values= input.split(";");
System.out.println("[" + values[0] + "]");
// Output: [1]

尝试转义该角色:

String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");

因为
|
在正则表达式中有特殊的含义。您需要像这样转义:
\\\\\\
,在Java中,您还必须转义反斜杠,这样您就可以得到
\\\\\\


管道字符是一个析取运算符,这意味着它告诉正则表达式引擎选择其左右两侧的任一模式。在您的例子中,那些与任何内容匹配的空字符串。

尝试在拆分时使用
\\\\\\\\\
而不是
\
,因为您需要转义它

因此,您的代码将更改为:

String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");

必须正确转义字符“|”

String input="1|2|3";
        String[] values= input.split("\\|");
        System.out.println("[" + values[0] + "]");

管道字符相当于正则表达式中的逻辑or。如果确实要使用管道字符作为分隔符,则需要使用
\
对其进行转义,如中所示


String[]values=input.split(\\\\)

split方法接收一个正则表达式作为参数。管道是一个保留字符,有自己的用途(它表示

您可以对其进行转义(
“\\\\\”
),或者,如果您使用的是Java 1.5+,则可以使用
模式

input.split(Pattern.quote("|"));

split(String)
接受一个“regex字符串”,因此
|
被解释为“regex or”,因此它不会分割任何内容。您应该通过转义
|
并检查
值的值是否会分割每个字符,以及初始空字符串来进行测试。这将不会编译,请检查您的代码。在java中,您需要双重转义,
split(\\\\;”)
。这将无法编译,请检查您的代码。在java中,您需要双转义、拆分(\\\\)。@bmorris591答案已修改。对不起,我忘了!