String s = "d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\xls-tmp\jgywzb\2012-11/JgbZbTemplate.xls";
String[] ss = s.split("xls-tmp");
如上面字符串,是从数据某个表读出来的文件存放路径,我想截取其中一段字符串,但编译的时候就报非法转移符,
我应该怎么弄才能截取成功呢?
String s =@ "d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\xls-tmp\jgywzb\2012-11/JgbZbTemplate.xls"; 前面加一个@
否则的话,\s \a \w都会被当作转义字符
好像不行啊
@ForeVer水: 不会吧,看图。
是不是不在windows系统上运行啊?
你先把地址转成文件路径看看。
string s = @"d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\xls-tmp\jgywzb\2012-11/JgbZbTemplate.xls"; var path = Path.GetFullPath(s); Console.WriteLine(path); var ss = path.LastIndexOf("xls-tmp"); var result = path.Substring(ss + 8); Console.WriteLine(result);
可能是你用的是C#,我的是java,所以那个@没作用
试试这样,将‘\’前邊再加一個‘\’
public static void main(String[] args) { String s = "d:\\sup\\apache-tomcat-6.0.18\\webapps\\bmis\\supres\\xls-tmp\\jgywzb\\2012-11/JgbZbTemplate.xls"; String[] ss = s.split("xls-tmp"); for(String out:ss){ System.out.println(out); } }
运行结果:
d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\
\jgywzb\2012-11/JgbZbTemplate.xls
是你想要的吧
这样是可以,但字符串路径是从数据库读出来,如果要像你这样,还得要用代码自动插入多以个斜杠才行
@ForeVer水: Replace就可以了嘛
读数据库的时候直接就用不行么?
@ForeVer水: 路徑為s,replace方法:
String[] ss = s.replace("\\","\\\\").split("xls-tmp");
換一下試試。
你是从数据库取出来的值,所以不需要担心你所说的编译错误。比如说String s = rs.getString("path"); rs.getString("path")表示你从数据库取出来的值,这个时候"d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\xls-tmp\jgywzb\2012-11/JgbZbTemplate.xls";这个字符串压根就不需要在代码中显示,所以就不会报错!