【问题标题】:Why my replaceAll not work为什么我的 replaceAll 不起作用
【发布时间】:2017-06-26 03:43:42
【问题描述】:

我尝试从字符串中删除特殊字符,但重点只是“?”仍在输出字符串上,而其他字符串已正确删除。

String[] special = {"\\*",";","_","=", "\\[", "\\]", ":", "\\?", "-", "\\.", 
"\\)", "\\(", "/", "!", "#", ",", "\"", "“", "”"};
    for (int i = 0; i < special.length; i++) {
        source = source.replaceAll(special[i], "");
    }

这是我的字符串

https://file.io/JjiLhD

【问题讨论】:

  • 重复this SO问题。
  • 我知道它是重复的 我知道替换是如何工作的,但我只想知道为什么问号仍然出现在我的文本上为什么其他人被正确替换
  • 因为您将其视为编码不正确的字符串
  • 你应该在你的问题中使 much 更清楚 - 目前,你的问题 reads 就好像你在问如何做正确替换,而不是满足您对为什么它不适用于replaceAll 的好奇心。如果只是后者,我相信您可以提供比您当前的问题更简单的minimal reproducible example

标签: java string special-characters replaceall


【解决方案1】:

您应该使用replace 而不是replaceAll,因为replaceAll 使用输入正则表达式

for (int i = 0; i < special.length; i++) {
        source = source.replace(special[i], "");
    }

replacereplaceAll 功能相同,但输入不同

替换此字符串中与文字目标匹配的每个子字符串 具有指定文字替换序列的序列。

【讨论】:

  • 感谢您的回答,但是当我使用 replace 时,它​​会执行 1 次,但 replaceAll 替换我的所有上下文仍然有“?”出现:(
  • 不,replace做了replaceAll任务,你可以试试,这是java命名问题,你可以阅读javadoc来了解它
【解决方案2】:

试试这个alphanumeric 个字符。

.replaceAll("[^a-zA-Z0-9]", ""));

并且只有alphabetical 个字符,

.replaceAll("[^a-zA-Z]", ""));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多