Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 转义字符串中的多个不同字符_Java - Fatal编程技术网

Java 转义字符串中的多个不同字符

Java 转义字符串中的多个不同字符,java,Java,我想用反斜杠(变成\\\,$变成\,$变成\等等)来转义给定Java字符串中的不同字符(\\\\\\) 是否可以在不多次调用字符串上的String#replace或String#replaceAll方法的情况下对此进行归档 您可以使用以下正则表达式 String escaped = s.replaceAll("[" + Pattern.quote("#$%&\\^_{}~") + "]", Matcher.quoteReplacement("\\")+"$0") 可以使用以下正

我想用反斜杠(
变成
\\\
$
变成
\
$
变成
\
等等)来转义给定Java字符串中的不同字符(
\\\\\\


是否可以在不多次调用字符串上的
String#replace
String#replaceAll
方法的情况下对此进行归档

您可以使用以下正则表达式

String escaped = s.replaceAll("[" + Pattern.quote("#$%&\\^_{}~") + "]",
    Matcher.quoteReplacement("\\")+"$0")

可以使用以下正则表达式

String escaped = s.replaceAll("[" + Pattern.quote("#$%&\\^_{}~") + "]",
    Matcher.quoteReplacement("\\")+"$0")

是的,有可能。你找不到这样做的策略吗?例如,使用循环?为什么要多次调用
String#replaceAll
?它使用正则表达式,因此您可以找到每个特殊字符,并将其替换为
\
,后跟找到的内容。@Pshemo您能再解释一点怎么做吗?看看Harald的答案。他张贴了代表我意思的代码。简而言之,我们可以在替换零件中使用
$x
符号来表示组
x
中的匹配项。由于组0代表整个匹配,我们可以编写
$0
来使用regex找到的内容。@Pshemo感谢您的解释。那正是我想要的。谢谢是的,这是可能的。你找不到这样做的策略吗?例如,使用循环?为什么要多次调用
String#replaceAll
?它使用正则表达式,因此您可以找到每个特殊字符,并将其替换为
\
,后跟找到的内容。@Pshemo您能再解释一点怎么做吗?看看Harald的答案。他张贴了代表我意思的代码。简而言之,我们可以在替换零件中使用
$x
符号来表示组
x
中的匹配项。由于组0代表整个匹配,我们可以编写
$0
来使用regex找到的内容。@Pshemo感谢您的解释。那正是我想要的。谢谢,这正是我想要的。谢谢,这正是我想要的。非常感谢。