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

时间:2014-07-16 08:27:32

标签: java string split

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);
        }
    }
}

该程序与String str2一起正常工作,但它不能与String str1一起使用此程序中可能有哪些流程?

3 个答案:

答案 0 :(得分:37)

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

要使正则表达式解析器理解您要按文字|拆分,您需要将\|传递给正则表达式解析器。但是\是Java字符串文字中的控制字符。因此,为了使Java编译器了解您希望将\|传递给正则表达式解析器,您需要将"\\|"传递给String#split()方法。

答案 1 :(得分:18)

使用

str1.split("\\|")

而不是

str1.split("|")

您需要转义|

答案 2 :(得分:9)

split需要一个正则表达式,由于|是正则表达式中的特殊字符,因此必须将其转义。试试str.split("\\|")。例如:

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