`
yidwo
  • 浏览: 261714 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSP中截取在线编辑器的字符串的处理.

    博客分类:
  • Java
阅读更多

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();
   }

}

  • SubStringHTML.rar (1.2 KB)
  • 描述: JSP中截取在线编辑器的字符串的处理.
  • 下载次数: 62
分享到:
评论

相关推荐

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    从中截取字符串.asp 从中截取字符串 切分字符串.asp 切分字符串 删除字符串前后导空格.asp 删除字符串前导空格.asp 删除字符串后导空格.asp 反向截取字符串.asp ...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    109.使用特定字符串对一个字符串进行分割? 110.格式化输出数字和字符? 111.生成一定范围的随机数? 112.调用其它应用程序? 113.禁止列出站点文件目录? 114.防止用户直接输入文件名访问JSP? 115.防止表单重复提交? 116...

    jsp编程技巧集锦

    使用特定字符串对一个字符串进行分割? 110.格式化输出数字和字符? 111.生成一定范围的随机数? 112.调用其它应用程序? 113.禁止列出站点文件目录? 114.防止用户直接输入文件名访问JSP? 115.防止...

    2021-2022计算机二级等级考试试题及答案No.17093.docx

    15. 字符串截取:Java中的substring方法,b=a.substring(1,3)会截取从索引1到3(不包括3)的子串,结果为"el"。 16. 输入输出:C语言中的gets函数读取用户输入,strcat函数拼接字符串,输入ABC后,输出结果为"ABC...

    JavaWeb应用实验报告.doc

    1. 使用文本编辑器(如记事本)编写JSP源文件,保存为`.jsp`格式,放在Tomcat服务器的`webapps/ROOT`目录下。 2. 启动Tomcat服务器。 3. 在浏览器中输入相应的URL地址查看运行结果。 4. 截取实验结果的屏幕图像以供...

    2021-2022计算机二级等级考试试题及答案No.905.docx

    17. **VB6.0 截取字符串**:在Visual Basic 6.0中,使用LEFT函数可以从字符串左侧截取指定长度的子字符串,所以截取"Visual"的表达式是LEFT("Visual Basic 6.0",6)。 18. **静态网页扩展名**:静态网页文件的常见...

    2021-2022计算机二级等级考试试题及答案No.4670.docx

    12. 在VB6.0中,截取字符串"Visual Basic 6.0"中的"Visual"的表达式是LEFT("Visual Basic 6.0",6)。 13. ASP.NET中的事件在服务器端引发并在服务器端处理。 14. `eval('500/10')`的结果是50.0,因为eval会计算字符...

    2021-2022计算机二级等级考试试题及答案No.16383.docx

    6. VisualBasic6.0截取字符串:在VB6中,使用`LEFT`函数可以截取字符串的前几个字符。例如,`LEFT("Visual Basic 6.0", 6)`将返回"Visual"。 7. 计算机基本存储单位:计算机存储和处理数据的基本单位是字节(Byte)...

    2021-2022计算机二级等级考试试题及答案No.9881.docx

    19. Java字符串截取:Strings="abcdedcba",s.substring(3,4)返回的字符串是"d"。 20. SQL语言:SQL代表结构化查询语言,用于数据库查询和操作。 21. 字段大小属性:OLE不是字段大小属性,而是对象链接和嵌入...

    JAVA超详细教程

    - 编写源代码:使用文本编辑器或IDE(如Eclipse、IntelliJ IDEA)编写Java源代码。 - 编译源代码:使用javac命令将.java文件编译成.class文件。 - 运行程序:使用java命令执行编译后的.class文件。 - **1.5 一个...

    2021-2022计算机二级等级考试试题及答案No.9768.docx

    例如,要从字符串“VisualBasic6.0”中截取前6个字符,可以使用`LEFT("VisualBasic6.0",6)`表达式。 ### 23. VFP中的日期运算表达式 在VFP中,要将当前日期加上一个数值,可以使用`DATE()+120`这样的表达式(选项B...

    2021-2022计算机二级等级考试试题及答案No.4466.docx

    23. **MVC架构**:在MVC(模型-视图-控制器)架构中,JSP通常用于实现视图,Servlet用于控制逻辑。 24. **DataSet数据描述**:DataSet内部使用XML描述数据,提供了跨平台的能力。 25. **C程序分析**:给定的C程序...

    java初学者必看

    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...

    2021-2022计算机二级等级考试试题及答案No.3652.docx

    15. SUBSTR函数从给定位置开始截取字符串,所以SUBSTR("VisualFoxPro5.0",7,6)返回"FoxPro"。 16. 如果x=5,y=10,则x=y的逻辑值为false,因为5不等于10。 17. 微型计算机硬件系统的核心是CPU(中央处理器),包括...

    Java2实用教程电子教案.pdf

    - **字符串的截取**: 使用 `substring()` 方法。 - **替换**: 使用 `replace()` 或 `replaceAll()` 方法。 - **字符串转换**: `Integer.toString()` 和 `String.valueOf()` 等方法。 **5.13 对象的字符串表示** - ...

    java2实用教程电子教案.pdf

    - 字符串的截取、替换、转换等功能。 - **5.13 对象的字符串表示** - 使用 `toString()` 方法来获取对象的字符串表示。 - **5.14 使用 STRINGTOKENIZER 类分析字符串** - 分割字符串的方法。 - **5.15 ...

    java实用教程

    - 字符串截取:`substring`方法 - 替换:`replace`方法 - 转换:`Integer.toString()`和`String.valueOf()` - 字符串表示:`toString`方法 - 字符串解析:`StringTokenizer`类 **5.16 字符串与字符、字节数组*...

Global site tag (gtag.js) - Google Analytics