六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 137|回复: 0

正则表达式替换 html 标签

[复制链接]

升级  60.67%

37

主题

37

主题

37

主题

秀才

Rank: 2

积分
141
 楼主| 发表于 2013-2-7 19:38:23 | 显示全部楼层 |阅读模式
/**     * 此方法描述的是:字符串的替换     * @param string需要替换的字符串     * @param oldString被替换的字符串     * @param newString新字符串     * @author 作者 E-mail: wangxiongdx@163.com     * @version 创建时间:2009-9-13 下午01:34:23     */     public static String replace(String string, String oldString, String newString) {         if (string == null) {             return null;         }         int i = 0;//初始位置,从0开始                  //从指定位置开始查找oldString在string中的起始位置         if ((i = string.indexOf(oldString, i)) >= 0) {             // Use char []'s, as they are more efficient to deal with.             char[] string2 = string.toCharArray();             char[] newString2 = newString.toCharArray();             int oLength = oldString.length();             //StringBuilder 简易替换 比 StringBuffer 要快             StringBuilder buf = new StringBuilder(string2.length);             //string2从起始位置到  i 的部分... 继续追加新串 newString2             buf.append(string2, 0, i).append(newString2);             //string中旧字符串的结束位置             i += oLength;             int j = i;             // Replace all remaining instances of oldString with newString.             //用新串替换所有出现的旧串             while ((i = string.indexOf(oldString, i)) > 0) {                 buf.append(string2, j, i - j).append(newString2);                 i += oLength;                 j = i;             }             //用新串替换后的string2中截获最后一次出现新串的结束位置到结尾             buf.append(string2, j, string2.length - j);             return buf.toString();         }         return string;     }         /**      * 此方法描述的是:使用正则替换字符串<br>tt</br>中含有的html标签和js标签      * @param string传入字符串      * @author 作者 E-mail: wangxiongdx@163.com      * @version 创建时间:2009-9-29 下午03:34:23      */    public static String stripHTMLTags(String tt){    //匹配所有带字母的标签(包括js标签)    String tag = "</?[a-zA-Z]*([\\s]*([A-Za-z]+[\\s]?=[\\s]?(\"|')?[\\w]+(\"|')?))*>";    //匹配js标签    String javascriptTag = "<script[\\s]*(.)*>";    Pattern p = Pattern.compile(tag);//起始    int index = 0;    //结束int last;while((index = tt.indexOf("<",index)) != -1){if((last = tt.indexOf(">",index)) != -1){//目标字符串String oldString = tt.substring(index, last+1);Matcher m = p.matcher(oldString);//首先判断是否为js标签if(Pattern.compile(javascriptTag).matcher(oldString).matches()){if((last = tt.indexOf("</script>",last)) != -1){tt = replace(tt, tt.substring(index, last+9), "");}//再判断是否为html标签(html正则考虑去除js标签正则???后补)}else if(m.matches()){tt = replace(tt, oldString, "");}}else{break;}}return tt;    }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表