2 u012083961 u012083961 于 2015.06.03 17:10 提问

java可以把点号转换成反斜杠吗

RT:
问题描述
String s="cn.sun.dao";
String d=s.replaceAll(".","/");//这个方法实际上匹配的是正则表达式?
对点号进行替换会有问题,其他的没什么问题。有没有其他方法可以替换点号啊!

9个回答

tongyi55555
tongyi55555   2015.06.03 18:23
已采纳

上当了,回复后CSDN会将两个反斜杠转换成一个,上面回复的内容中都出现了这个问题,请以这个答案为准。

replaceAll方法中替换支持正则表达式,你的代码中一个点号在正则中代表任意字符,得到的结果不正确,需要修改为

 String d=s.replaceAll("\\.", "/");
 /* * 注释\\.代表一个点号 **/

此外replace方法也能满足你的要求,但replace方法不支持正则表达,因此你的代码还可以改成:
String d=s.replace('.', '/');
或者
String d=s.replace(".", "/");

bdmh
bdmh   Ds   Rxr 2015.06.03 17:11

加上斜杠,转义,否则识别不了

gamefinity
gamefinity   Rxr 2015.06.03 17:17

虽然你举得例子不好url这样换没有意义,但是做这件事还是可以的。

String d=s.replaceAll("\.","/");
song79915
song79915   2015.06.03 17:21

不要用replaceAll,用replace就好了。斜杠不是逃逸字符,饭斜杠才需要转义。

 public static void main(String[] args) {
        String str = "com.google.www";
        str = str.replace('.', '/');
        System.out.println(str);
    }
weikzhao0521
weikzhao0521   2015.06.03 17:36

正则表达式中的点号(“.”)可以匹配任意字符。
所以上面程序实际上不是以“.”作为分隔符,而是以任意字符作为分隔符。为了实现以“.”作为分隔符的目的,必须对“.”号进行转义,将上面的程序改为 :

s.replaceAll("\.", "/")

weikzhao0521
weikzhao0521   2015.06.03 17:37

s.replaceAll("\.", "/")

weikzhao0521
weikzhao0521   2015.06.03 17:37

正则表达式中的点号(“.”)可以匹配任意字符。
所以上面程序实际上不是以“.”作为分隔符,而是以任意字符作为分隔符。为了实现以“.”作为分隔符的目的,必须对“.”号进行转义,将上面的程序改为 :

s.replaceAll("\.", "/")

tongyi55555
tongyi55555   2015.06.03 18:20

replaceAll方法中替换支持正则表达式,你的代码中一个点号在正则中代表任意字符,得到的结果不正确,需要修改为
String d=s.replaceAll("\.", "/");
\.代表一个点号,楼上的用.是不正确的;

此外replace方法也能满足你的要求,但replace方法不支持正则表达,因此你的代码还可以改成:
String d=s.replace('.', '/');
或者
String d=s.replace(".", "/");

datou431
datou431   Rxr 2015.06.18 14:27

s.replaceAll(".", "/")

Csdn user default icon
上传中...
上传图片
插入图片