按\\拆分字符串

时间:2015-02-20 13:21:35

标签: java string

我的字符串是name="D:\\Tool\\BondTable\\New_Table.csv"; 我希望将其拆分为"\\"

我的代码是

String [] output = name.replaceAll("\\",",").split(",");

我收到以下错误 -

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

5 个答案:

答案 0 :(得分:3)

在正则表达式中使用四个反斜杠来匹配单个反斜杠,并且您不需要具有中间replaceAll函数。

String name="D:\\Tool\\BondTable\\New_Table.csv";
String parts[] = name.split("\\\\");
System.out.println(Arrays.toString(parts));

输出:

[D:, Tool, BondTable, New_Table.csv]

答案 1 :(得分:3)

您可以像这样使用Pattern.quote;

public static void main(String[] args) {
        String name="D:\\Tool\\BondTable\\New_Table.csv";
        String pattern = Pattern.quote(System.getProperty("file.separator"));
        String[] splittedFileName = name.split(pattern);

        for (String string : splittedFileName) {
            System.out.println(string);
        }

    }

输出是;

D:
Tool
BondTable
New_Table.csv

有关详细信息,请查看here

答案 2 :(得分:2)

String [] output = name.replaceAll(Pattern.quote("\\"),",").split(",");

答案 3 :(得分:2)

您可以使用Java 7的java.nio类实现类似的结果,而不使用正则表达式:

Path p = Paths.get("D:\\Tool\\BondTable\\New_Table.csv");
System.out.println(p.getRoot());
for (Path sub: p) {
    System.out.println(sub);
}

<强>输出

D:\
Tool
BondTable
New_Table.csv

<强>注释

如您所见,由于某种原因,根本身会打印出尾随分隔符。

除此之外,它几乎是你想要的结果。

答案 4 :(得分:0)

试试这个:

String [] output = name.split("\\\\");