Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
使用split(";&124quot;)按管道符号拆分Java字符串_Java_Regex_String - Fatal编程技术网

使用split(";&124quot;)按管道符号拆分Java字符串

使用split(";&124quot;)按管道符号拆分Java字符串,java,regex,string,Java,Regex,String,Java官方文档说明: 例如,字符串“boo:and:foo”使用这些表达式生成以下结果 正则表达式结果 : 这就是我需要的工作方式。但是,如果我运行以下命令: public static void main(String[] args){ String test = "A|B|C||D"; String[] result = test.split("|"); for(String s : result){ System

Java官方文档说明:

例如,字符串
“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+"<");
        }
    }
publicstaticvoidmain(字符串[]args){
字符串测试=“A | B | C | D”;
字符串[]结果=test.split(“|”);
for(字符串s:结果){
System.out.println(“>”+s+”您需要

test.split("\\|");
split
使用正则表达式,在正则表达式中,
是一个表示
运算符的元字符。您需要使用
\
对该字符进行转义(以字符串形式写为
“\\\”
,因为
\
也是字符串文本中的元字符,需要另一个
\
对其进行转义)

你也可以使用

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

然后让
Pattern.quote
创建表示

的正则表达式的转义版本,split()方法将正则表达式作为参数

使用正确的转义:
string.split(\\\\\\”)

或者,在Java 5+中,使用创建用于此目的的帮助程序:

string.split(Pattern.quote("|"))

它适用于任意输入字符串。当您需要引用/转义用户输入时非常有用。

您也可以使用apache库并执行以下操作:

StringUtils.split(test, "|");
使用此代码:

public static void main(String[] args) {
    String test = "A|B|C||D";

    String[] result = test.split("\\|");

    for (String s : result) {
        System.out.println(">" + s + "<");
    }
}
publicstaticvoidmain(字符串[]args){
字符串测试=“A | B | C | D”;
字符串[]结果=test.split(“\\\\”);
for(字符串s:结果){

System.out.println(“>”+s+“您也可以使用
.split([|]”)

(我用这个代替了
.split(\\\\;”)
,这对我来说不起作用。)

指定限制或最大值将准确,例如:“boo | | | | a”或“| | boo |”或“| |”

但是
test.split(“\\\\”);
将为相同的示例返回不同长度的字符串数组


使用参考:

是的,方法采用regex,并且
|
是regex的特殊字符。您是我作为堆栈溢出调节器的第二选择。最好的选择是。转换时不是舒尔,但在Java 8中,可以使用
模式。quote()
。此解决方案已被接受的答案指出。无需重复。两个版本都可以正常工作。如果其中一个版本没有,则表明问题出在其他地方。@Pshemo但这确实增加了一种有趣的味道,即如果将某些保留符号放在括号内,则不必转义。的可能重复
string.split(Pattern.quote("|"))
StringUtils.split(test, "|");
public static void main(String[] args) {
    String test = "A|B|C||D";

    String[] result = test.split("\\|");

    for (String s : result) {
        System.out.println(">" + s + "<");
    }
}
test.split("\\|",999);