【问题标题】:Replace "\'" with any other character with String's replace()使用 String 的 replace() 将“\'”替换为任何其他字符
【发布时间】:2014-02-28 04:49:47
【问题描述】:

我不能用String做简单的操作,把\'换成*。

示例:t'est\' -> t'est*

我尝试过 replace 和 replaceAll 方法:

字符串 s 的值为:"t'est\'";

s.replaceAll("\'", "*"); -> result: t*est*
s.replaceAll("\\'", "*"); -> result: t*est*
s.replaceAll("\\\'", "*"); -> result: t*est*
s.replaceAll("\\\\'", "*"); -> result: t'est'

s.replace("\'", "*"); -> result: t'est'
s.replace("\\'", "*"); -> result: t'est'
s.replace("\\\'", "*"); -> result: t'est'
s.replace("\\\\'", "*"); -> result: t'est'

但无论如何我都没有得到结果 t'est*。

【问题讨论】:

  • 您是在 IDE 中编写字符串,还是打印出来看看是什么?对你来说,它在什么时候看起来像是“测试”?这很重要,因为其中有许多 \ 转义。

标签: java string replace special-characters


【解决方案1】:

您确定s 的值吗? ' 不是一个有意义的转义字符,所以如果你写 String s = "t'est\'",s 的值就是"t'est'"。要包含额外的\ 字符,您需要通过编写String s = "t'est\\'" 对其进行转义。然后,我认为"\\\\'" 将是用于查找它的正则表达式。

【讨论】:

  • 是的,我敢肯定,字符串 s 在每一行中都使用 s = "t'est\'" 进行了初始化。问题是我不能修改 s,因为它是我从服务器获取的 sql 查询的一部分...
  • @user3057179 如果你在控制台看到这个字符串:t'est\',那么在java文件中应该这样写:String s="t\'est\\\'";或字符串 s="t'est\\'";
【解决方案2】:

怎么样:

String s="t\'est\\\'";
s = s.replaceAll("\\\\'", "*");
System.out.println(s);

产生:

t'est*

我用http://www.htmlescape.net/javaescape_tool.html 转义了你的字符串

【讨论】:

【解决方案3】:

\' 实际上是一个转义的'。 如果你想有一个实际的 \' 你需要转义斜线,即写\\\'

然后您需要将其替换为\\\\'。在这种情况下,对于 java,每对斜杠生成一个转义斜杠 \,对于正则表达式,生成的 \\' 是 \'。

【讨论】:

    【解决方案4】:

    这个怎么样

    String s = "t'est\\'";
    System.out.println(s);
    System.out.println(s.replace("\\", "*").replace("*'", "*"));
    

    这是输出的样子:

    t'est\'
    t'est*
    

    如果我的理解不正确或需要修改,请告诉我。

    【讨论】:

    • 看起来很简单!
    【解决方案5】:

    你不需要逃避 ' 随便写

    s.replace("'", "*");
    

    替换一个'


    编辑:

    如果你想匹配\'你应该尝试

    s.replace("\\'", "*");
    

    第一个反斜杠将转义第二个,' 将保持“未转义”

    【讨论】:

    • 结果应该是t'est* 而不是t*est*。您的解决方案将同时替换 '
    • 结果应该是t'est*
    • 不,这将是最好的est。
    • 对不起,我以为他添加了反斜杠是因为他想逃避 '
    【解决方案6】:

    当你说 String s 的值是“t'est\'”时,你的意思是它在源代码中是这样出现的吗?因为,如果是这样,你作为 's' 使用的字符串实际上是“t'est'”,这意味着你永远找不到要替换的“\'”。

    如果它被声明为“t'est\'”,那么它将在其中包含“\'”。

    【讨论】:

    • 我在一个带有 sql 语句的文本文件中有这个词。
    猜你喜欢
    • 2021-11-29
    • 2016-10-05
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多