Java String split(“|”)方法调用无法正常工作[重复]

Posted

技术标签:

【中文标题】Java String split(“|”)方法调用无法正常工作[重复]【英文标题】:Java String split("|" ) method call not working correctly [duplicate] 【发布时间】:2014-09-06 16:31:15 【问题描述】:
public class SplitStr 

    public static void main(String []args) 
        String str1 = "This | is | My | Account | For | Java|";
        String str2 = "This / is / My / Account / For / Java/";
       // String[] arr = str.split("|");

        for(String item : str1.split("|")) 
            System.out.print(item);
        
    

程序可以正确使用字符串 str2,但不能使用字符串 str1 该程序中可能的流程是什么?

【问题讨论】:

不工作是什么意思?请在这两种情况下显示输出。 你在 str 上调用它,而不是在 str1 上。就个人而言,我很惊讶这个编译。 【参考方案1】:

String#split() 需要正则表达式作为第一个参数,| 是正则表达式中的控制字符。

要让正则表达式解析器理解您的意思是按文字| 进行拆分,您需要将\| 传递给正则表达式解析器。但是\ 是Java 字符串文字中的控制字符。所以,为了让 Java 编译器明白你想将\| 传递给正则表达式解析器,你需要将"\\|" 传递给String#split() 方法。

【讨论】:

很好的解释和深入的细节。 +1【参考方案2】:

使用

str1.split("\\|")

而不是

str1.split("|")

你需要转义|

【讨论】:

【参考方案3】:

split 需要一个正则表达式,因为| 是正则表达式中的一个特殊字符,所以你必须对其进行转义。试试str.split("\\|")。示例:

>>> Arrays.asList("This | is | My | Account | For | Java|".split("\\|"));
[This ,  is ,  My ,  Account ,  For ,  Java]

【讨论】:

以上是关于Java String split(“|”)方法调用无法正常工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章

我爱java系列---String.Split方法

[Java]_[初级]_[高效使用String.split的方法]

[Java]_[初级]_[高效使用String.split的方法]

|在 java string.split() 方法中无法识别[重复]

Java中split的用法

Java String split(“|”)方法调用无法正常工作[重复]