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