将html评估为包含< %%>的字符串带脚本的标签

时间:2016-03-07 17:08:17

标签: javascript java html string escaping

我的代码中可能存在一个微不足道的问题,其中我从Web服务获取HTML作为响应,该服务作为java字符串返回。我想在网页上将此String显示为HTML。我面临的问题是html retured包含一些

形式的脚本
<% ... %>

标记。这些显示在网页上。我想要的只是立即评估这些,而不是在屏幕上显示为文本。 例如,正在显示的文本是

<% if('a' == 'b'){ %> 

你好。

我想摆脱&lt;%...%&gt;的事情。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果我理解,你想从Java String中删除这些东西,所以这样的东西可以工作:

String code = "<html> Hello<% if('a' == 'b'){ %>, I'm<% if('a' == 'b'){ %> French</html>";
    int start = 0;
    int end = 0;

    String str = "";

    end = code.indexOf("<%",start); //First substring will do "0 - end";

    while(end != -1 && start != -1){
        str += code.substring(start, end);

        start = code.indexOf("%>",end) +2; //+2 is used to get the index after "%>"
        end = code.indexOf("<%",start); //First occurence of "<%" after the last "%>"
    }

    str += code.substring(start,code.length());//Last substring will do "start - str.len-1"

    System.out.println(str);

更简单的方式

    String code = "<html>Hello<% if('a' == 'b'){ %>, I'm<% if('a' == 'b'){ %> French</html>";
    String str = code.replaceAll("<%.*?%>", "");
    System.out.println(str);

打印

<html>Hello, I'm French</html>