首页 > 去除一段html文本中特殊颜色标记的文字

去除一段html文本中特殊颜色标记的文字

如图所示,现在的要求是打印或者显示的时候绿色标记的文字不要显示出来,其他的包括格式不变。 ,保存在数据库的内容如下

<p style="font-weight:bold;text-decoration:underline;"><span style="font-size:12px;">${wthzxy_培训项目条款增加}</span></p>
<p style="font-weight:bold;text-decoration:underline;"><span style="font-size:24px;"><br />
</span></p>
<p style="font-weight:bold;text-decoration:underline;"></p>
<p><span style="font-size:12px;font-weight:bold;">二<span style="color:#000000;font-size:12px;">、</span><span style="color:#000000;font-size:12px;"><span style="color:#000000;font-size:12px;">培训费</span>用</span><span style="color:#000000;font-size:12px;">及支付方式</span></span><span style="color:#006600;font-size:24px;"><span style="color:#009900;font-size:12px;"><span style="color:#009900;font-size:12px;">(</span>请选择</span><span style="color:#009900;font-size:12px;">一线一</span><span style="color:#009900;font-size:12px;">种在左侧中划√,同时仅保留选定的条款)</span></span></p>
<p><span style="font-size:24px;"><span style="font-size:12px;">1. 本项目的培训费用为:</span><span style="font-size:12px;font-weight:bold;text-decoration:underline;">${wthzxy_培训费用_元/人}${wthzxy_培训费用_元/班}</span><span style="font-size:12px;">元/人</span><span style="font-size:12px;">,大写为人民币${pu_预留字段4}<span style="color:#006600;font-size:12px;">(<span style="color:#009900;font-size:12px;">此处填写“每班</span></span><span style="color:#009900;font-size:12px;">”或“每人</span><span style="color:#009900;font-size:12px;">”</span><span style="color:#009900;font-size:12px;">)</span></span><span style="font-size:12px;font-weight:bold;text-decoration:underline;">${wthzxy_培训费用大写金额}</span><span style="font-size:12px;">。学员人数${pu_预留字段5}<span style="color:#009900;font-size:12px;">(此处填写“不少于<span style="color:#009900;font-size:12px;">”或“不多于</span></span><span style="color:#009900;font-size:12px;">”)</span></span><span style="font-size:12px;font-weight:bold;text-decoration:underline;">${wthzxy_最低开班人数}</span><span style="font-size:12px;font-weight:bold;text-decoration:underline;">${wthzxy_最多开班人数}</span><span style="font-size:12px;">人。如果甲方学员未满足人数限制,乙方有权不开班。</span></span></p>
<p><span style="font-size:12px;"><b><span style="font-size:12px;">&nbsp; &nbsp; </span></b>本项目培训费主要用于:</span><span style="font-size:12px;font-weight:bold;text-decoration:underline;">${wthzxy_培训费用主用途}</span><span style="font-size:12px;">,<span style="color:#009900;">(</span><span style="font-family:宋体;color:#009900;font-size:9pt;mso-bidi-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-ansi-language:EN-US;mso-ascii-font-family:Tahoma;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-fareast-theme-font:minor-fareast;">此处填写:</span><span style="font-family:宋体;color:#009900;font-size:9pt;mso-bidi-font-family:'Times New Roman';mso-hansi-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-ascii-font-family:'Times New Roman';mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-fareast-theme-font:minor-fareast;">课程研发费、授课费、教学管理费、教学场地设备使用费、教材资料费、讲义制作费、证书制作费等)</span>不包含学员的食宿交通费用。</span><span style="font-size:12px;">学员培训期间食宿由乙方协助安排,费用由甲方或甲方学员自理。</span></p>
<p><span style="font-size:12px;">2. 支付培训费及开具发票方式如下</span><span style="line-height:36px;color:#009900;font-size:12px;">(请选择一种在左侧框中划√,同时仅保留选定的条款)</span><span style="font-size:12px;">:</span></p>
<p><span style="font-size:12px;">${wthzxy_支付方式}</span></p>
<p></p>
<p></p>

现在的做法是根据和"color:#009900"标记查找标记的文本,然后截取掉,但是总是bug,有部分绿色字体没有截取掉,显示出来或者多一个>, 不知道有什么更好的办法

private String getRemoveMarkContent(String content, StringBuilder newCon) {
        int i = content.indexOf("color:#009900");
        // 绿色标记前面的文字
        String s1 = content.substring(0, i);

        s1 = s1.substring(0, s1.lastIndexOf("<span"));

        // 剩余文字
        String s2 = content.substring(i);
        int j = s2.indexOf("</span>");
        // 剩余文字除去第一次出现的绿色文字
        String s3 = s2.substring(j + 7);
        newCon = newCon.append(s1);
        int flag = s3.indexOf("color:#009900");
        if (flag > 0) {
            getRemoveMarkContent(s3, newCon);
        } else {
            newCon.append(s3);
        }

        return newCon.toString();
    }

这是我写的java去除绿色标记代码,经过测试,发现在绿色嵌套中会出现问题, 如下面这段代码

<span style="color:#009900;font-size:12px;">(委托<span style="color:#009900;font-size:12px;">方</span>全称,确保具有独立签署合同的资质或拥有相应的授权)</span></p>

正在改,另外发现使用报表导出成pdf或者word时,遇到
标记都会打印成如下图所示


OK了,我用JS替换了,其实这没啥问题问题是,绿色有两个值,一个是#009900; 一个是#006600;

http://jsfiddle.net/fiture/UJuBE/


要截取掉的和保留的区别只有这个颜色的区别,只能通过去掉颜色为#009900的,或者只保留没有color字段或者颜色不是#009900的字段。 我觉得还是把你截取的方法提供出来,让大家给你看看有什么问题。

【热门文章】
【热门文章】