首页 新闻 会员 周边 捐助

如何截取带\的字符串

0
悬赏园豆:10 [已解决问题] 解决于 2012-12-12 10:52

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

如上面字符串,是从数据某个表读出来的文件存放路径,我想截取其中一段字符串,但编译的时候就报非法转移符,

我应该怎么弄才能截取成功呢?

ForeVer水的主页 ForeVer水 | 初学一级 | 园豆:151
提问于:2012-12-04 16:32
< >
分享
最佳答案
0

String s =@ "d:\sup\apache-tomcat-6.0.18\webapps\bmis\supres\xls-tmp\jgywzb\2012-11/JgbZbTemplate.xls"; 前面加一个@

否则的话,\s  \a \w都会被当作转义字符

收获园豆:10
叶小党 | 菜鸟二级 |园豆:481 | 2012-12-04 16:44

好像不行啊

ForeVer水 | 园豆:151 (初学一级) | 2012-12-04 16:51

@ForeVer水: 不会吧,看图。

叶小党 | 园豆:481 (菜鸟二级) | 2012-12-04 16:59
其他回答(3)
0

是不是不在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);
RyanCheng | 园豆:474 (菜鸟二级) | 2012-12-04 19:44

可能是你用的是C#,我的是java,所以那个@没作用

支持(0) 反对(0) ForeVer水 | 园豆:151 (初学一级) | 2012-12-04 21:45
0

试试这样,将‘\’前邊再加一個‘\’

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
是你想要的吧
草上飞吧 | 园豆:195 (初学一级) | 2012-12-05 00:28

这样是可以,但字符串路径是从数据库读出来,如果要像你这样,还得要用代码自动插入多以个斜杠才行

支持(0) 反对(0) ForeVer水 | 园豆:151 (初学一级) | 2012-12-05 00:31

@ForeVer水: Replace就可以了嘛

 读数据库的时候直接就用不行么?

支持(0) 反对(0) 天真浪浪 | 园豆:950 (小虾三级) | 2012-12-05 10:53

@ForeVer水: 路徑為s,replace方法:

String[] ss = s.replace("\\","\\\\").split("xls-tmp");

換一下試試。

支持(0) 反对(0) 草上飞吧 | 园豆:195 (初学一级) | 2012-12-05 17:01
0

你是从数据库取出来的值,所以不需要担心你所说的编译错误。比如说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";这个字符串压根就不需要在代码中显示,所以就不会报错!

Vincent.Pei | 园豆:156 (初学一级) | 2012-12-06 13:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册