我的字符串是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
答案 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("\\\\");