从一个字符串数组中删除一个字符

时间:2015-04-13 09:11:42

标签: java arrays string replace char

我一直在尝试从字符串数组中删除特定字符,但仍然会失败。 char是“$”,我不知道我做错了什么,所以希望有人能够指出正确的方向,我的代码:

for (int y = 0; y<possibleAnswers.length;y++) {
        display = possibleAnswers[y].replaceAll("$", "");
        System.out.println(display);
    }

possibleAnswers包含4个字符串,其中4个字符串为“$”,我想在显示之前将其删除。

当我运行上面的代码时,显示“$”,任何想法?

6 个答案:

答案 0 :(得分:3)

您的代码存在的问题是replaceAll()需要“正则表达式”。在正则表达式中使用时,$字符具有特定含义。因此,您有两种选择:

  1. 继续使用replaceAll();那么你必须“逃避特殊性格”;使用replaceAll("\\$", "")或“[$]”,正如其他人所指出的那样。
  2. 使用其他方法,例如不期望“正则表达式模式字符串”的replace()

答案 1 :(得分:2)

replaceAll()接受正则表达式,而不只是一个字符。当你说&#34; $&#34;时,你并没有告诉它匹配&#39; $&#39;字符,但匹配字符串的结束位置或字符串结束前的换行符之前。

你需要逃避&#39; $&#39;,所以它知道只匹配角色,而不是像它的特殊正则表达式那样对待它。

这样做:possibleAnswers[y].replaceAll("\\$", "");

答案 2 :(得分:1)

尝试

possibleAnswers[y].replaceAll("\\$", "");

转义字符,因为$是正则表达式中的特殊字符,并且replaceAll()采用正则表达式,因此传递的字符串无法识别。

您还可以使用带有字符串

replace()
 possibleAnswers[y].replace("$", "");

答案 3 :(得分:1)

在您的代码中,$ keywordregex,以匹配end of line,即$。因此,您必须escape如下所示。

display = possibleAnswers[y].replaceAll("\\$", "");

答案 4 :(得分:1)

只需使用possibleAnswers [y] .replace(&#34; $&#34;,&#34;&#34;);删除&#34; $&#34;来自字符串。

答案 5 :(得分:0)

for (int y = 0; y < possibleAnswers.length; y++) {
        display = possibleAnswers[y].replace("$", "");
        System.out.println(display);
    }

正如所建议的,我使用replace方法而不是replaceAll,它完成了这项工作。与此同时,我学会了阅读文档,以便更深入地理解这些方法。

感谢所有帮助人员,真的很感激。