public static void main(String[] args)
/**
* 过滤掉非指定保留的html元素,保留元素间的内容和指定的html。
*
* 这个方法没有对缺失的或未闭合的html元素做处理,
* 是假设字符串中的TYPE_CLASS、TYPE_CLASS1、SPAN标签都符合规范,
* 代码思路是让一个新建的StringBuffer类来保存过滤出来字符,
* 当遇到‘<’ 或 ‘>’时,截取当前位置后面或前面的字符串,并与指定保留的元素字符串进行比较,根据判断进行保存
*/
final String TYPE_CLASS = "span class=\"type-class\"";
final int TYPE_CLASS_LENGTH = TYPE_CLASS.length();
final String TYPE_CLASS1 = "span class=\"type-class1\"";
final int TYPE_CLASS_LENGTH1 = TYPE_CLASS1.length();
final String SPAN = "span";
final int SPAN_LENGTH = SPAN.length();
final String SPAN_OFF = "</span>";
final int SPAN_OFF_LENGTH = SPAN_OFF.length();
String str =
"sustained by <a href=\"http://www.springsource.com\">SpringSource</a>" +
" O(∩_∩)O哈哈~ <span class=\"type-class\">type-class</span>" +
", Spring delivers <span class=\"aaaaa\">SpringSource2</span>" +
"。< <span class=\"type-class1\">type->class1</span>啊啊";
StringBuffer sb = new StringBuffer(str.length());
boolean charBool = true; // 表示是否保存此字符
boolean tagBool = false; // 表示前面是否是指定保留的元素
for(int i=0; i<str.length(); i++){
char c = str.charAt(i);
if(c == '<'){
charBool = false;
String span = "";
String span1 = "";
/*
* TYPE_CLASS、TYPE_CLASS1中最长的那个标签的长度,小于字符串长度时,才于截取并赋值
* 否则,会是原在上面赋值的空串,作用是防止处理到字符串最后时,截取越界
*/
if(i+1+TYPE_CLASS_LENGTH1 < str.length()){
span = str.substring(i+1, i+1+TYPE_CLASS_LENGTH);
span1 = str.substring(i+1, i+1+TYPE_CLASS_LENGTH1);
}
String spanoff = str.substring(i, i+SPAN_OFF_LENGTH);
if(span.equalsIgnoreCase(TYPE_CLASS)
|| span1.equalsIgnoreCase(TYPE_CLASS1)){
tagBool = true; //这里的作用是当下一次的c == '<' </span>出现时,让下面的spanoff判断能执行
charBool = true;
sb.append(c);
}
// 判断是否指定保留元素的关闭标签,并配合tagBool,判断前面是否是指定保留元素,是则保存,以闭合元素
if(spanoff.equalsIgnoreCase(SPAN_OFF) && tagBool){
charBool = true;
sb.append(c);
tagBool = false;
}
}else if(c == '>'){
// 当元素结束时,判断是否是指定保留元素,是,则保存‘>’符
if(charBool)
sb.append(c);
// 当元素结束时,打开charBool,保存元素外的内容
charBool = true;
}else if(charBool){// true时,说明字符不在元素"<???>"里,是元素之间的内容,保存
sb.append(c);
}
}
System.out.println(sb);
分享到:
相关推荐
这个方法允许开发者指定哪些属性在过滤过程中可以被保留。 3. public function setException:设置特例,即某些标记即使被忽略过滤,也可以保留指定的属性。 4. public function setIgnore:设置忽略过滤的标记。...
【PHP过滤HTML标记属性类】 在PHP中,处理和过滤HTML标记的属性是确保网站安全性的重要步骤,特别是防止跨...通过自定义允许的属性、特例和忽略的标签,可以实现对HTML内容的定制化过滤,以满足不同场景下的安全需求。
`.filter(selector)`则根据指定的选择器对当前元素集合进行过滤,返回匹配选择器的元素。此外,它还可以接收一个函数作为参数,函数会为每个元素执行,并根据返回值决定是否保留该元素。 ### 9. `.find(selector)` ...
1. `html()` 和 `html(text)`:`html()`用于获取或设置包装集内第一个元素的HTML内容。当提供一个文本参数时,`html(text)`将所有元素的内部HTML替换为指定的文本。 2. `size()`:返回包装集中的元素数量。 3. `...
- **自定义设置**:可能允许用户选择是否保留链接、图片描述等特定HTML元素。 - **多语言支持**:处理不同语言的HTML文档,确保转换后的TXT文件仍可正确阅读。 使用方法通常包括: 1. **解压**:首先需要将下载的...
这样,页面上只有那些没有`italic`类的`<p>`元素保留下来。 jQuery选择器可以是各种类型,包括但不限于ID选择器(#),类选择器(.), 标签选择器(*),属性选择器([attribute=value])等。这使得`remove()`方法能够适应...
函数参数通常包含元素的索引和元素本身,可以根据这些信息返回布尔值决定元素是否保留。 ```javascript $('div').filter(function(index, element) { return $(element).text().indexOf('关键词') !== -1; }); ```...
无论是按照索引筛选、按属性筛选、按内容筛选还是按类名筛选,这些过滤操作都能帮助开发者高效地找到所需的元素,从而进行进一步的操作,如样式修改、事件绑定或者内容更新等。掌握好这些过滤元素的方法,可以让前端...
`explode()`函数将字符串按照指定的分隔符分割成数组,而`implode()`则是将数组元素连接成字符串。这两种函数在处理基于特定分隔符的文本数据时非常有用,比如在处理CSV文件或者日志文件时。 大小写转换是通过一组...
- `filter()`:筛选匹配元素集合,根据表达式或函数返回的真值保留元素。 - `find()`:在匹配元素的后代中搜索指定的元素。 - `is()`:检查元素是否匹配给定的表达式。 - `next()`:获取匹配元素的下一个兄弟...
首先,我们需要了解CSS选择器,这是JavaScript定位HTML元素的基础。CSS选择器可以基于元素类型、ID、类名、属性等来选取元素。例如,`div`选择器会选取所有的`<div>`元素,`#myID`会选取ID为`myID`的元素,`.myClass...
HTML网页扒取工具是一种高效的方法,用于批量获取网页上的HTML、CSS、JavaScript和图像资源,大大简化了网页内容的下载和存储过程。这种工具对于网页设计师、开发者、数据抓取人员以及想要离线查看网页内容的用户来...
- `$(”元素名称”).clone(布尔值)`: 克隆元素,可选参数决定是否保留事件绑定。 - `$(”元素名称”).insertAfter(content)`: 将元素插入到指定内容之后。 - `$(”元素名称”).insertBefore(content)`: 将元素...
这个方法接受两个参数:第一个是要过滤的数组array,第二个是一个回调函数,这个函数对数组中的每个元素执行,并决定是否保留该元素。回调函数接受两个参数:元素的索引(index)和元素值(value)。最终,grep方法...
- 可以通过`<dispatcher>`元素指定过滤器对哪些类型的请求进行过滤,例如`REQUEST`、`FORWARD`、`INCLUDE`等。 - 也可以通过`<filter>`和`<filter-mapping>`元素来配置多个过滤器的执行顺序。 #### 过滤器的简单...
AngularJS的filter过滤器是其核心特性之一,用于在数据绑定时对数据进行转换和处理。在AngularJS应用中,filter常被用来格式化数据、筛选数据或改变数据的显示方式,极大地提高了代码的可读性和用户体验。下面将详细...
你可以提供一个选择器作为参数,来指定要删除的特定类型元素。比如,以下代码会删除页面上所有class为"italic"的段落: ```javascript $("p").remove(".italic"); ``` 在这个例子中,所有`<p>`标签中具有"class=...
- `filter(expression)`, `filter(filter)`: 过滤已选元素,保留满足条件的元素。 - `find(expr)`: 查找匹配expr的后代元素。 - `is(expr)`: 检查元素是否匹配expr。 - `next(expr)`: 获取元素的下一个兄弟元素...
- `filter()`, `not()`: 过滤元素集合,保留或排除匹配指定条件的元素。 - `is()`: 检查元素是否匹配给定的选择器。 5. **核心功能(Core)**: - `$()`: jQuery构造函数,可以用于选取DOM元素或创建新的jQuery...
- `filter(expression/filter)` 过滤集合,仅保留符合表达式的元素。 - `find(expr)` 查找子孙元素。 - `is(expr)` 检查元素是否匹配表达式。 - `next(expr)` 获取相邻的后续元素。 - `not(el/expr/elems)` ...