黑马程序员技术交流社区

标题: 正则表达式有一个点不懂,求解 [打印本页]

作者: 魏志林    时间: 2016-1-9 10:25
标题: 正则表达式有一个点不懂,求解
str.replaceAll("\\.txt", ".java")。
这一个句的\\.txt用.java来代替,中\\不是表示转义字符\吗,那转义之后不就是\.txt了,
   .java替换的不就是\.txt了吗,怎么实际上替换的是.txt呢

作者: 一大把手    时间: 2016-1-9 16:09
\\.txt如果是\.txt的话,\就把后面的 . 给转义了。而你本来是把.txt转换成.java的,所以就用\\.txt,这样才能转成你想要的
作者: solomanlove    时间: 2016-1-9 16:25
class str {
        public static void main (String[] args){
                String str = "\\.txt";
                System.out.println("替换前:" + str);                                                //替换前:\.txt,这是因为转义字符,输出为\
                str = str.replaceAll("\\\\.txt", ".java");                                              //java中,用\\表示一个\,所以用\\\\表示\\.
                System.out.println("替换后:" + str);//打印字符串                              //替换后:.java
        }
}       
总结:在regex中"\\"表示一个"\",在java中一个"\"也要用"\\"表示。这样,前一个"\\"代表regex中的"\",后一个"\\"代表java中的"\"

作者: 魏志林    时间: 2016-1-9 17:16
solomanlove 发表于 2016-1-9 16:25
class str {
        public static void main (String[] args){
                String str = "\\.txt";

我表述错了,应该是这样的
File file = new File(path);  
                        File newfile = new File(file.getPath().replaceAll("\\.txt", ".java"));
这句话替换的结果是.java,在这里为什么可以,但是单独的
String s="\\.txt";
                        String str="C:\\Users\\weizhilin\\Desktop\\文件\\03技术博客\\新建文本文档.txt";
                        s=str.replaceAll(s, ".java");
这个也可以是.java,这个到底是为什么呢?


作者: river1205    时间: 2016-1-9 19:44
没看懂,不知道什么问题,就是一种格式




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