当前位置: 首页 > 知识库问答 >
问题:

String#replaceAll()方法未替换为$(dollar)[重复]

蒋浩
2023-03-14

我尝试了内置方法 String#replaceAll() 来替换我的字符串内容中的所有“$”。但它不起作用。

String ss = "HELLO_$_JAVA";
System.out.println(ss.indexOf("$"));
System.out.println(ss);
ss = ss.replaceAll("$", "");
System.out.println(ss);// 'HELLO__JAVA' is expected

输出:

6
HELLO_$_JAVA
HELLO_$_JAVA

预期产出:

6
HELLO_$_JAVA
HELLO__JAVA

编辑:虽然Java正则表达式和美元符号涵盖了答案,但我的问题可能对使用String#replaceAll()时面临同样问题的人有所帮助。字符串replace()和replaceAll()之间的区别也可能有所帮助。

这个问题的两种可能的解决方案是

ss = ss.replace("$", "");


ss = ss.replaceAll("\\$", "");

共有3个答案

连时铭
2023-03-14

可能不是最好的方法,而是一种解决方法,

String parts[] = ss.split("\\$");

然后将它们中的每一个凹陷

String output = "";
for(String each:parts){
    output=output+each;
}

然后输出中有替换的字符串

燕航
2023-03-14

<code>字符串。replaceAll用于正则表达式“$”是正则表达式中的一个特殊字符。

如果您不想使用正则表达式,请使用< code>String.replace,而不是< code>String.replaceAll。

勾岳
2023-03-14

replace eAll方法的第一个参数采用正则表达式,而不是文字字符串,并且$在正则表达式中具有特殊含义。

您需要通过在它前面放置一个反斜杠来转义 $;反斜杠需要为双斜杠,因为它在 Java 字符串文字中具有特殊含义。

ss = ss.replaceAll("\\$", "");
 类似资料:
  • 问题内容: 我有一个字符串,想简单地用string替换其中的所有换行符。 只需写一下就足够了: 我对它的正则表达式部分感到困惑。我换行需要两个斜杠吗?这样够好吗? 问题答案: 不要使用正则表达式! 。您只需要纯文本匹配即可替换。 用于将文字字符串替换为另一个: 请注意,它仍然可以替换 所有 出现的内容,区别是使用正则表达式进行搜索。

  • 问题内容: 我一直在尝试设计一种用Pattern / Matcher实例替换多个String#replaceAll调用的方法,希望它比我当前在String中替换文本的方法要快,但是我不确定该怎么做关于它。 这是我要操作的字符串的示例: 如您所见,有多个@字符,中间有3个字符。情况总是如此。如果我想替换“ @ xxx @”的每个实例(其中xxx可以是0到9之间的任何小写字母或数字),最有效的解决方法

  • 我们使用的是 replaceAll 的 String 方法,我们不能在任何字符串中替换 { 。我们的例子: 尝试过: 误差如下: java.util.regex.PatternSyntaxException:发生非法重复 对任何想法持开放态度!也许有解决方法?!

  • 描述 (Description) java.util.regex.Matcher.replaceAll(String replacement)方法将替换与给定替换字符串的模式匹配的输入序列的每个子序列。 声明 (Declaration) 以下是java.util.regex.Matcher.replaceAll(String replacement)方法的声明。 public String rep

  • 描述 (Description) 此方法将使用给定替换匹配给定正则表达式的此字符串的每个子字符串替换。 语法 (Syntax) 以下是此方法的语法 - public String replaceAll(String regex, String replacement) 参数 (Parameters) 这是参数的细节 - regex - 要与此字符串匹配的正则表达式。 replacement -

  • 问题内容: 我希望将文本“REPLACEME”替换为我的StringBuffer符号。当我打印符号时,它是一个有效的字符串。当我打印查询时,它仍然具有文本REPLACEME而不是符号。为什么? 问题答案: 更改 至: Java中的字符串被设计为不可变的。 这就是为什么不能替换当前字符串 中 的字符,因此它必须返回替换了字符的 新 字符串。 此外,如果你想简单地替换文字,不需要正则表达式的语法支持使