package yidwo.com;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
* 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
* @param param 将要截取的字符串参数
* @param length 截取的字节长度
* @param end 字符串末尾补上的字符串
* @return 返回截取后的字符串
*/
public class SubStringHTML
{
public String subStringHTML(String param,int length,String end) {
StringBuffer result = new StringBuffer();
int n = 0;
char temp;
boolean isCode = false; //是不是HTML代码
boolean isHTML = false; //是不是HTML特殊字符,如
for (int i = 0; i < param.length(); i++) {
temp = param.charAt(i);
if (temp == '<') {
isCode = true;
}
else if (temp == '&') {
isHTML = true;
}
else if (temp == '>' && isCode) {
n = n - 1;
isCode = false;
}
else if (temp == ';' && isHTML) {
isHTML = false;
}
if (!isCode && !isHTML) {
n = n + 1;
//UNICODE码字符占两个字节
if ( (temp + "").getBytes().length > 1) {
n = n + 1;
}
}
result.append(temp);
if (n >= length) {
break;
}
}
result.append(end);
//取出截取字符串中的HTML标记
String temp_result = result.toString().replaceAll("(>)[^<>]*(<?)", "$1$2");
//去掉不需要结素标记的HTML标记
temp_result = temp_result.replaceAll("</?(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/?>",
"");
//去掉成对的HTML标记
temp_result=temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>","$2");
//用正则表达式取出标记
Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>");
Matcher m = p.matcher(temp_result);
List endHTML = new ArrayList();
while (m.find()) {
endHTML.add(m.group(1));
}
//补全不成对的HTML标记
for (int i = endHTML.size() - 1; i >= 0; i--) {
result.append("</");
result.append(endHTML.get(i));
result.append(">");
}
return result.toString();
}
}
分享到:
相关推荐
从中截取字符串.asp 从中截取字符串 切分字符串.asp 切分字符串 删除字符串前后导空格.asp 删除字符串前导空格.asp 删除字符串后导空格.asp 反向截取字符串.asp ...
109.使用特定字符串对一个字符串进行分割? 110.格式化输出数字和字符? 111.生成一定范围的随机数? 112.调用其它应用程序? 113.禁止列出站点文件目录? 114.防止用户直接输入文件名访问JSP? 115.防止表单重复提交? 116...
使用特定字符串对一个字符串进行分割? 110.格式化输出数字和字符? 111.生成一定范围的随机数? 112.调用其它应用程序? 113.禁止列出站点文件目录? 114.防止用户直接输入文件名访问JSP? 115.防止...
15. 字符串截取:Java中的substring方法,b=a.substring(1,3)会截取从索引1到3(不包括3)的子串,结果为"el"。 16. 输入输出:C语言中的gets函数读取用户输入,strcat函数拼接字符串,输入ABC后,输出结果为"ABC...
1. 使用文本编辑器(如记事本)编写JSP源文件,保存为`.jsp`格式,放在Tomcat服务器的`webapps/ROOT`目录下。 2. 启动Tomcat服务器。 3. 在浏览器中输入相应的URL地址查看运行结果。 4. 截取实验结果的屏幕图像以供...
17. **VB6.0 截取字符串**:在Visual Basic 6.0中,使用LEFT函数可以从字符串左侧截取指定长度的子字符串,所以截取"Visual"的表达式是LEFT("Visual Basic 6.0",6)。 18. **静态网页扩展名**:静态网页文件的常见...
12. 在VB6.0中,截取字符串"Visual Basic 6.0"中的"Visual"的表达式是LEFT("Visual Basic 6.0",6)。 13. ASP.NET中的事件在服务器端引发并在服务器端处理。 14. `eval('500/10')`的结果是50.0,因为eval会计算字符...
6. VisualBasic6.0截取字符串:在VB6中,使用`LEFT`函数可以截取字符串的前几个字符。例如,`LEFT("Visual Basic 6.0", 6)`将返回"Visual"。 7. 计算机基本存储单位:计算机存储和处理数据的基本单位是字节(Byte)...
19. Java字符串截取:Strings="abcdedcba",s.substring(3,4)返回的字符串是"d"。 20. SQL语言:SQL代表结构化查询语言,用于数据库查询和操作。 21. 字段大小属性:OLE不是字段大小属性,而是对象链接和嵌入...
- 编写源代码:使用文本编辑器或IDE(如Eclipse、IntelliJ IDEA)编写Java源代码。 - 编译源代码:使用javac命令将.java文件编译成.class文件。 - 运行程序:使用java命令执行编译后的.class文件。 - **1.5 一个...
例如,要从字符串“VisualBasic6.0”中截取前6个字符,可以使用`LEFT("VisualBasic6.0",6)`表达式。 ### 23. VFP中的日期运算表达式 在VFP中,要将当前日期加上一个数值,可以使用`DATE()+120`这样的表达式(选项B...
23. **MVC架构**:在MVC(模型-视图-控制器)架构中,JSP通常用于实现视图,Servlet用于控制逻辑。 24. **DataSet数据描述**:DataSet内部使用XML描述数据,提供了跨平台的能力。 25. **C程序分析**:给定的C程序...
2.6.4 Eclipse的编辑器 2.6.5 Eclipse的工具栏和菜单栏 2.6.6 使用Eclipse编写HelloWorld程序 2.7 本章习题 第3章 Java语言基础 3.1 标识符 3.1.1 标识符的概念 3.1.2 变量命名规则 3.1.3 变量命名技巧 3.2...
15. SUBSTR函数从给定位置开始截取字符串,所以SUBSTR("VisualFoxPro5.0",7,6)返回"FoxPro"。 16. 如果x=5,y=10,则x=y的逻辑值为false,因为5不等于10。 17. 微型计算机硬件系统的核心是CPU(中央处理器),包括...
- **字符串的截取**: 使用 `substring()` 方法。 - **替换**: 使用 `replace()` 或 `replaceAll()` 方法。 - **字符串转换**: `Integer.toString()` 和 `String.valueOf()` 等方法。 **5.13 对象的字符串表示** - ...
- 字符串的截取、替换、转换等功能。 - **5.13 对象的字符串表示** - 使用 `toString()` 方法来获取对象的字符串表示。 - **5.14 使用 STRINGTOKENIZER 类分析字符串** - 分割字符串的方法。 - **5.15 ...
- 字符串截取:`substring`方法 - 替换:`replace`方法 - 转换:`Integer.toString()`和`String.valueOf()` - 字符串表示:`toString`方法 - 字符串解析:`StringTokenizer`类 **5.16 字符串与字符、字节数组*...