你的想法不是太好,按照你的想法改成下面这样就可以了
[\\\\]+\\代表\
在字符串中\是转义符号
在正则中\也是转义符号
明白了吧?
你的("[\\]+");
相当于把]给转义了,这样第一个[就没有结束符]了
报错信息已经说的很明白了要分析错误信息.
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
[\]+
^ public static void main(String[] args) {
String lastfilename;
int lastnum;
String lastbyte;
Pattern pattern = Pattern.compile("[\\\\]+"); // 怀疑有毛病的的地方
String[] strs = pattern.split("D:\\1.java");
lastnum = strs.length;
--lastnum;
lastbyte = strs[lastnum];
System.out.println(lastbyte);
lastfilename = lastbyte;
}
[\\\\]+\\代表\
在字符串中\是转义符号
在正则中\也是转义符号
明白了吧?
你的("[\\]+");
相当于把]给转义了,这样第一个[就没有结束符]了
报错信息已经说的很明白了要分析错误信息.
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
[\]+
^ public static void main(String[] args) {
String lastfilename;
int lastnum;
String lastbyte;
Pattern pattern = Pattern.compile("[\\\\]+"); // 怀疑有毛病的的地方
String[] strs = pattern.split("D:\\1.java");
lastnum = strs.length;
--lastnum;
lastbyte = strs[lastnum];
System.out.println(lastbyte);
lastfilename = lastbyte;
}
public static String getLastFilePath(String path)
{
String[] test = path.split("\\\\");
for(int i=0; i<test.length; i++)
{
System.out.println(test[i]);
}
return test[test.length-1];
}
测试数据:c:\\hello\\major\\test.java
System.out.println(f.getName());