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

removing a char from an array of Strings

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

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

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

当我运行上述代码时,显示“$”,有什么想法吗?

尝试

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

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

您也可以使用 replace() 来获取字符串

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

您的代码的问题是 replaceAll() 需要 "regular expression"。 $ 字符在正则表达式中使用时具有特定含义。因此你有两个选择:

  1. 继续使用replaceAll();那么你必须 "escape the special character";通过使用 replaceAll("\$", "") 或其他人指出的“[$]”。
  2. 使用不同的方法,例如 replace() 不需要 "regular expression pattern string"。

在您的代码中,$regex 中是 keyword,用于匹配 end of line 即 $。所以你必须 escape 如下所示。

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

replaceAll() 接受正则表达式,而不仅仅是字符。当您说“$”时,您并不是在告诉它匹配“$”字符,而是在匹配字符串的结束位置或字符串结尾之前的换行符之前。

您需要转义 '$',因此它知道只匹配字符,而不是将其视为特殊的正则表达式含义。

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

只需使用 possibleAnswers[y].replace("$", "");从字符串中删除“$”。

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

按照建议,我使用了替换方法而不是 replaceAll 并且它完成了工作。同时我学会了查看文档以更深入地了解这些方法。

感谢大家的帮助,真的很感激。