Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java string.replaceAll出现问题_Java - Fatal编程技术网

Java string.replaceAll出现问题

Java string.replaceAll出现问题,java,Java,我只是想用\\\\替换字符串\\\\ 下面是程序,但它正在终止 String path="\\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material"; long start = System.currentTimeMillis(); // replace this string \\ with \\\\ String formatedPath = path.repl

我只是想用
\\\\
替换字符串
\\\\

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

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) );

请让我知道我犯的错误。

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

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

您的实际字符串只包含一个\。试验

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

因此,如果replaceAll返回double\\when System.out.println(“您的字符串”.replaceAll(…)),则运行正常

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

// replace single backslash with double
String formatedPath = path.replace("\\", "\\\\");
尝试

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);
你做得对。 在Java中,string
\\
表示一个反斜杠,在regex中表示非字符串转义

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

产量

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

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

终止?您是否有任何错误?
Long。不需要字符串(结束-开始)
<代码>(结束-开始)就足够了。它的给定线程[main](挂起的异常模式Syntaxexception)由于您不需要任何正则表达式功能,请考虑使用String.replace(String,String)而不是String.replaceAll(String,String)在字符串中,all\\n实际上是字符串中的一个。您的replaceAll提供了一个带有两个实数\\的字符串,因此它是可以的。测试执行系统.out.println(\\dctmadmin\\Human Resource\\Training\\Procedures\\formals\\legities\\Material”)和系统.out.println(\\drt…\\Material.replaceAll(…)是。它可以工作,但是否可以将输出显示为\\\\dctmadmin\\\\Human Resource\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;然后显示\\\\dctmadmin\\\\Human Resource\\\\Training\\\\\Procedures\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
string after formatting using replaceAll = \\dctmadmin\\Human Resource\\Training\\Procedures\\Formalities\\Legalities\\Material