Java 将空格转换为命令行类型的空格

Java 将空格转换为命令行类型的空格,java,escaping,Java,Escaping,我正在编写一个java程序,在这个程序中,我需要在文件名的空格前面加上\。例如,two-word filename.ext将是two-word\filename.ext 我尝试了System.out.println(str.replaceAll(“,”\”)但它在\和System.out.println(str.replaceAll(“,”\\”)处表示非法转义字符不影响字符串 如何执行此操作?使用replace方法指定要用作替换的确切字符串 String str = "space now pl

我正在编写一个java程序,在这个程序中,我需要在文件名的空格前面加上
\
。例如,
two-word filename.ext
将是
two-word\filename.ext

我尝试了
System.out.println(str.replaceAll(“,”\”)
但它在
\
System.out.println(str.replaceAll(“,”\\”)处表示非法转义字符不影响字符串


如何执行此操作?

使用
replace
方法指定要用作替换的确切
字符串

String str = "space now please";
System.out.println(str.replace(" ","\\ "));
印刷品

space\ now\ please

您需要转义
字符串
中的
\
字符,因此它将是
“\\”
使用
replace
方法指定要用作替换的确切
字符串

String str = "space now please";
System.out.println(str.replace(" ","\\ "));
印刷品

space\ now\ please

您需要转义
字符串
中的
\
字符,因此它将是
“\\”
使用
replace
方法指定要用作替换的确切
字符串

String str = "space now please";
System.out.println(str.replace(" ","\\ "));
印刷品

space\ now\ please

您需要转义
字符串
中的
\
字符,因此它将是
“\\”
使用
replace
方法指定要用作替换的确切
字符串

String str = "space now please";
System.out.println(str.replace(" ","\\ "));
印刷品

space\ now\ please

您需要对
字符串中的
\
字符进行转义,因此它将是
“\\\”

这应该可以做到

System.out.println(str.replaceAll(" ","\\\\ "));

这应该能奏效

System.out.println(str.replaceAll(" ","\\\\ "));

这应该能奏效

System.out.println(str.replaceAll(" ","\\\\ "));

这应该能奏效

System.out.println(str.replaceAll(" ","\\\\ "));

我不知道
System.out.println(str.replace(“,”\\”)也可以。为什么要替换所有空白而不是第一个空白?无论如何,+1@rpax答案在Javadoc中。基本上,对于
replaceAll
,替换字符串是由
java.util.Matcher
使用的一个特殊的
String
表达式<代码>请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果
<代码>替换不存在此类问题,但不使用正则表达式匹配值。@SotiriosDelimanolis
替换。。。不使用正则表达式来匹配值
true,但让我们更清楚地了解情况。这句话并不意味着这里根本不使用正则表达式引擎
replace(CharSequence,CharSequence)
在内部使用regex引擎,但在使用之前,它会自动从regex转义所有元字符(使用
Pattern.LITERAL
flag)和replace(使用
Matcher.quoteReplacement
方法)。@Pshemo我猜这是语义。但是请注意,
replace(…)
的规范中没有说明如何实现替换。OracleJDK7实现使用正则表达式引擎,但它不必这样做。我本来可以说得更清楚,但这是一条注释,哎呀,不能编辑。我不知道
System.out.println(str.replace(“,“\\”)也可以。为什么要替换所有空白而不是第一个空白?无论如何,+1@rpax答案在Javadoc中。基本上,对于
replaceAll
,替换字符串是由
java.util.Matcher
使用的一个特殊的
String
表达式<代码>请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果
<代码>替换不存在此类问题,但不使用正则表达式匹配值。@SotiriosDelimanolis
替换。。。不使用正则表达式来匹配值
true,但让我们更清楚地了解情况。这句话并不意味着这里根本不使用正则表达式引擎
replace(CharSequence,CharSequence)
在内部使用regex引擎,但在使用之前,它会自动从regex转义所有元字符(使用
Pattern.LITERAL
flag)和replace(使用
Matcher.quoteReplacement
方法)。@Pshemo我猜这是语义。但是请注意,
replace(…)
的规范中没有说明如何实现替换。OracleJDK7实现使用正则表达式引擎,但它不必这样做。我本来可以说得更清楚,但这是一条注释,哎呀,不能编辑。我不知道
System.out.println(str.replace(“,“\\”)也可以。为什么要替换所有空白而不是第一个空白?无论如何,+1@rpax答案在Javadoc中。基本上,对于
replaceAll
,替换字符串是由
java.util.Matcher
使用的一个特殊的
String
表达式<代码>请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果
<代码>替换不存在此类问题,但不使用正则表达式匹配值。@SotiriosDelimanolis
替换。。。不使用正则表达式来匹配值
true,但让我们更清楚地了解情况。这句话并不意味着这里根本不使用正则表达式引擎
replace(CharSequence,CharSequence)
在内部使用regex引擎,但在使用之前,它会自动从regex转义所有元字符(使用
Pattern.LITERAL
flag)和replace(使用
Matcher.quoteReplacement
方法)。@Pshemo我猜这是语义。但是请注意,
replace(…)
的规范中没有说明如何实现替换。OracleJDK7实现使用正则表达式引擎,但它不必这样做。我本来可以说得更清楚,但这是一条注释,哎呀,不能编辑。我不知道
System.out.println(str.replace(“,“\\”)也可以。为什么要替换所有空白而不是第一个空白?无论如何,+1@rpax答案在Javadoc中。基本上,使用
replaceAll
,r