黑马程序员技术交流社区

标题: 烫手的山芋——反斜杠 [打印本页]

作者: NewDemo    时间: 2014-4-19 10:58
标题: 烫手的山芋——反斜杠
本帖最后由 NewDemo 于 2014-4-19 14:03 编辑

需求:有个字符串"c:\\\\pubwa\\\\txt\\\\\\abc\\defg"                       想要按照“\"来切

这样写"(\\)+"  为什么不对呢?那这里的正则表达式要如何写?


作者: ノtrack    时间: 2014-4-19 11:03
正则表达式中反斜杠'\' 分割字符串
有一个字符串:   user\name要将其分开为user和name

方法如下:  String str = "user\\name";
                 String[] s = str.split("\\\\");
因为在正则表达式中"\"是有特殊意义的,如果想要表示"\",必须在它前面使用一个转义字符"\"
所以: 在字符串中,"\\"表示反斜杠的.

如果写为 String str  = "user\name";
                String[] s  = str.split("\\"); 是会出现 java.util.regex.PatternSyntaxException:异常.
作者: NewDemo    时间: 2014-4-19 11:56
本帖最后由 NewDemo 于 2014-4-19 12:06 编辑
ノtrack 发表于 2014-4-19 11:03
正则表达式中反斜杠'\' 分割字符串
有一个字符串:   user\name要将其分开为user和name

感谢你的回答,但我上面的题目要怎么处理呢??

作者: 左拉    时间: 2014-4-19 12:13
本帖最后由 左拉 于 2014-4-19 12:16 编辑
  1. String[] strs="c:\\\\pubwa\\\\txt\\\\\\abc\\defg".split("\\+");
复制代码

这样行不行。

作者: 黑马-杞文明    时间: 2014-4-19 12:27
先使用正则表示  把多个“\”替换为一个 让后用 split('\') 就行了
作者: NewDemo    时间: 2014-4-19 13:17
左拉 发表于 2014-4-19 12:13
这样行不行。
  1. String[] strs="c:\\\\pubwa\\\\txt\\\\\\abc\\defg".split("\\+");
  2.                 for(String s:strs){
  3.                         System.out.println(s);
  4.                 }
复制代码



c:\\pubwa\\txt\\\abc\defg
这是打印结果,不对哦
作者: NewDemo    时间: 2014-4-19 13:26
黑马-杞文明 发表于 2014-4-19 12:27
先使用正则表示  把多个“\”替换为一个 让后用 split('\') 就行了
  1. String s = "c:\\\\pubwa\\\\txt\\\\\\abc\\defg";
  2.                 s = s.replaceAll("\\+","\\");
  3.                 System.out.println(s);
复制代码



按照上面代码实现,替换出的结果是这样的
  1. c:\\pubwa\\txt\\\abc\defg
复制代码

作者: osully    时间: 2014-4-19 13:46
split("\\\\+")




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2