java切割\的问题?

大家看图片吧:需求就是把trString中的单反斜杠切换成双反斜杠或者斜杠;
但是始终转换不了,有办法吗?谢谢
图片描述

阅读 3.8k
3 个回答

这是JAVA基础问题

你的输入是错误的,反斜杠 是转义字符,比如你想定义一个字符串 a\b\c, 那么需要写成:

String str = "a\\b\\c";

你可以写个简单的例子输出测试一下

public class Test11 {
    public static void main(String[] args) {
        String str1 = "a\\b\\c\\d";
        System.out.println(str1);
        String str2 = str1.replace("\\", "/");
        System.out.println(str2);
    }
}

根据你的评论,你应该是转换文件路径。先看下面的代码:

    String str1 = "z:\1\0\20170807\110\1621262.V3";
    System.out.println(str1); // output: z:...(特除字符显示不了)

    String str2 = "z:\\1\\0\\20170807\\110\\1621262.V3";
    System.out.println(str2); // ouptput: z:\1\0\20170807\110\1621262.V3

    String str3 = "z:\\\\1\\\\0\\\\20170807\\\\110\\\\1621262.V3";
    System.out.println(str3); // output: z:\\1\\0\\20170807\\110\\1621262.V3

所以你从接口得到的应该是字符应该是z:\1\0\20170807\110\1621262.V3

  • 在IDE的编辑器里面正确写上面字符串的方式应该是:String str2 = "z:\\1\\0\\20170807\\110\\1621262.V3";
  • 如果你要一个字符保存起来或是打印显示出来是:"z:\\1\\0\\20170807\\110\\1621262.V3";,在IDE正确地表达它应该是:"z:\\\\1\\\\0\\\\20170807\\\\110\\\\1621262.V3";

回到你的问题:首先,如果你从接口或别的地方得到的字符串是z:\1\0\20170807\110\1621262.V3,这个路径应该是Windows可以识别,例如:"c:\windows"就是有效的文件路径:

System.out.println(new File("c:\\windows").getAbsolutePath());

其次,如果是要把文件路径转换成双\\

    String str4 = str2.replace("\\", "\\\\");
    System.out.println(str4); // output: z:\\1\\0\\20170807\\110\\1621262.V3

最后,另外一种转为文件路径的方式是把:\代替成 /

    String str5 = str2.replace("\\", "/");
    System.out.println(str5); // output: z:/1/0/20170807/110/1621262.V3
新手上路,请多包涵

如果是路径,应该是有两个反斜杠“\”,或者单个“/”就行,所以感觉这个trString有点问题。
如果用“”单个反斜杠,会被当作转义字符处理。

public static void main(String[] args){
        String str = "Z:/1/0/20170807/110/fds.V3";
        System.out.println(str.replace("/","\\\\"));
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题