4

我只是想\\\\\\

下面是程序,但它正在终止

String path="\\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material";         

long start = System.currentTimeMillis();
// replace this string \\ with \\\\
String formatedPath = path.replaceAll("\\\\", "\\\\\\\\");
System.out.println(" string after formatting using replaceAll = "+formatedPath);
long end = System.currentTimeMillis();
System.out.println(" time take in milli seconds for String.replaceAll = "+Long.toString(end-start) );

请让我知道我正在做的错误。

4

6 回答 6

3

对于不需要正则表达式功能的文字字符串替换,您应该使用它,replace而不是replaceAll因为它更简单、更高效。

// replace single backslash with double
String formatedPath = path.replace("\\", "\\\\");
于 2012-11-02T08:57:40.043 回答
1

你真正的字符串只包含一个\。测试

System.out.println("\\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material");

因此,如果在 System.out.println("your string".replaceAll(...)); 时返回 double \\,则您的 replaceAll 运行正常

于 2012-11-02T08:57:24.443 回答
1

试试看

String path = 
    "\\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material";


long start = System.currentTimeMillis();
// replace this string \\ with \\\\

String formatedPath = path.replaceAll("\\\\", "\\\\\\\\\\\\\\\\");

System.out.println(" string after formatting using replaceAll = " + 
                   formatedPath);


long end = System.currentTimeMillis();

System.out.println(" time take in milli seconds for String.replaceAll = " + Long.toString(end - start));

System.out.println(" path  "+formatedPath);
于 2012-11-02T08:58:07.140 回答
0

在你的字符串中,当你说 \ 它实际上意味着 \ 被另一个 \ 转义,因此它正在正确替换它。

String path="\\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material";

         System.out.println("String before: "+ path);
        long start = System.currentTimeMillis();
        // replace this string \\ with \\\\

          String formatedPath = path.replaceAll("\\\\", "\\\\\\\\");

          System.out.println(" string after formatting using replaceAll = "+formatedPath);

我得到的输出

   String before:  \dctmadmin\Human Resource\Training\Procedures\Formalities\Legalities\Material

     string after formatting using replaceAll = \\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material
     time take in milli seconds for String.replaceAll = 2
于 2012-11-02T08:54:46.380 回答
0

你做对了。在 Java 中字符串\\代表一个反斜杠,在正则表达式中它是非字符串转义。

    String formatedPath = path.replaceAll("\\\\", "\\\\\\\\");
    System.out.println("path         = " + path);
    System.out.println("formatedPath = " + formatedPath);

path         = \dctmadmin\Human Resource\Training\Pr...s\Form...s\L...s\Material
formatedPath = \\dctmadmin\\Human Resource\\Training\\Pr..s\\Form...s\\Material
于 2012-11-02T09:08:37.010 回答
0

的输出

string after formatting using replaceAll = \\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material

是正确的。看起来它没有改变,因为您忽略了原始中的“\”被转义的事实:)

于 2012-11-02T09:09:20.757 回答