【问题标题】:How to make replaceAll working in java?如何使replaceAll在java中工作?
【发布时间】:2016-08-27 23:06:23
【问题描述】:

我尝试了不同的方法,但还不行。

public String SuEscapeHTML(String text){
    text=text.replaceAll("/&/g", "&");
    // and how to deal with the double quote? text=text.replaceAll("/"/g", """);
    text=text.replaceAll("/'/g", "'");
    text=text.replaceAll("/</g", "&lt;");
    text=text.replaceAll("/>/g", "&gt;");
    text=text.replaceAll("/\\/g", "&#92;");
    System.out.println(text);
    return text;
}

使用此功能不会改变任何事情。

那么如何让它工作呢?

【问题讨论】:

  • 你没有使用正则表达式,所以使用String.replace;还有几个库已经这样做了(不要重新发明轮子)。
  • 查看replaceAll 的文档。不需要/.../g
  • @chanjianyi 你试过 text=text.replaceAll("&", "&") 吗? (可能想最后一个)
  • 您在正则表达式中使用的是 javascript 的语法。这不是您在 JAVA 中编写正则表达式的方式
  • @Slaks 是对的……this 文档,顺便说一句。 (或者为 jdk 7 将其更改为 7,或者如果更早...自己开枪)

标签: java regex replaceall


【解决方案1】:

您使用的正则表达式的语法是 JavaScript。这就是你在 Java 中的做法

String text = "&>\"<\\'"; //You need to escape " in text also

System.out.println(text.replaceAll("&", "&amp;")); 
System.out.println(text.replaceAll("\"", "&quot;")); //For quotes
System.out.println(text.replaceAll("'", "&apos;"));
System.out.println(text.replaceAll("<", "&lt;"));
System.out.println(text.replaceAll(">", "&gt;"));
System.out.println(text.replaceAll("\\\\", "&#92;"));

Ideone Demo

【讨论】:

  • 语言名称是Java,不是JAVA;这不是首字母缩略词。否则,很好的答案。
猜你喜欢
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
相关资源
最近更新 更多