📄 htmlsubstring.java
字号:
/** * <p>Title: </p> * <p>Description: This class is written to intercept named length of HTML String</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: 中关村软件</p> * @author 唐旭成 * @version 1.0 */package com.gs.util;import java.lang.*;import java.io.*;public class htmlSubstring{ public htmlSubstring() { } public String htmlSubstr(String htmlStr,int len) { String bakStr = new String(htmlStr+" "); String finalStr = new String(""); String tagStr = new String(""); String tmpStr = new String(""); char chBegin = '<'; char chEnd = '>'; char chSpace = ' '; int pos1 = -1; int pos2 = -1; int pos3 = -1; int i = 0; int count = 0; int remainder = 0; String[] tagArray = new String[10]; int num = bakStr.length(); if(len >= num) { return bakStr; // 返回全部字符 } pos1 = bakStr.indexOf(chBegin); if(pos1 >= len) { finalStr += bakStr.substring(0,len); return finalStr; } if(pos1 > -1) { finalStr += bakStr.substring(0,pos1); i += pos1; } while(true) { if(pos1 == -1 || pos1 == num -1) { remainder = len - i; if(pos2 > 0 && pos3 > 0) { finalStr += bakStr.substring(pos2,pos3); } tmpStr = bakStr.substring(pos2+1,pos2+1+remainder); finalStr += tmpStr; break; } remainder = len - i; if(remainder <= 0) { break; } pos2 = bakStr.indexOf(chEnd,pos1+1); if(pos2 == -1) { tmpStr = bakStr.substring(pos2+1,pos3); finalStr += tmpStr.substring(0,remainder); break; } pos3 = bakStr.indexOf(chSpace,pos1+1); if(pos3 > pos2 || pos3 == -1) /* "<"和">"之间没有空格,如:<TD> */ { tagStr = bakStr.substring(pos1+1,pos2); tagStr = "<" + tagStr + ">"; } else /* "<"和">"之间有空格,如:<TD ALIGN=LEFT> */ { tagStr = bakStr.substring(pos1+1,pos3); tagStr = "<" + tagStr; } tagArray[count] = tagStr.toUpperCase(); // System.out.println("The Tag is <" + tagStr + ">"); pos3 = bakStr.indexOf(chBegin,pos2+1); if(pos3 == -1) { tmpStr = bakStr.substring(pos2+1); if(remainder > num - pos2 - 1) { remainder = num - pos2 - 1; } finalStr += bakStr.substring(pos1,pos2+1) + tmpStr.substring(0,remainder); break; } tmpStr = bakStr.substring(pos2+1,pos3); if(tmpStr.length() >= remainder) { finalStr += bakStr.substring(pos1,pos2+1) + tmpStr.substring(0,remainder); break; } else { i += tmpStr.length(); finalStr += bakStr.substring(pos1,pos2+1) + tmpStr; } // System.out.println("finalStr is " + finalStr); pos1 = pos3; count++; } // System.out.println("finalStr is " + finalStr); // 以下程序自动追加结束Tag int num1 = 0; int num2 = 0; int j = 0; String tagStr2 = new String(); num = tagArray.length -1; for(i=num;i>=0;i--) { num1 = 0; num2 = 0; pos1 = 0; tagStr = tagArray[i]; if(tagStr == null) { continue; } if(tagStr.equalsIgnoreCase("<IMG") || tagStr.equalsIgnoreCase("<HR>") || tagStr.equalsIgnoreCase("<BR>") ) { continue; // 跳过本来就没有结束Tag的Tag } if(tagStr.charAt(1) == '/') { continue; // 跳过结束Tag } tagStr2 = "</" + tagStr.substring(1,tagStr.length()) ; // 结束Tag if(tagStr.charAt(tagStr.length() -1) != '>') tagStr2 += ">"; pos1 = finalStr.indexOf(tagStr,0); while(pos1 > -1) { pos1 = finalStr.indexOf(tagStr,pos1); if(pos1 == -1) break; pos1++; num1++; } pos1 = finalStr.indexOf(tagStr2,0); while(pos1 >= 0) { pos1 = finalStr.indexOf(tagStr2,pos1); if(pos1 == -1) break; pos1++; num2++; } for(j= 1;j<=num1 - num2;j++) { finalStr += tagStr2; // 追加结束Tag } } return finalStr; } public static void main(String[] args) { int li_len = 0; String htmlStr = new String(""); if ( args.length == 2 ) { htmlStr = args[0].trim(); li_len = Integer.parseInt(args[1]); } else { System.out.println("Syntax is: java htmlSubstring [htmlString] [length]"); System.out.println(" String htmlString --- HTML String to intercept"); System.out.println(" int length --- The length of interception"); System.out.println("Remark: A chinese character's length is 1, not 2!!!\n"); } if(htmlStr.equals(null) || htmlStr.equalsIgnoreCase("")) { htmlStr = "编辑会议<a href=““><B>ss<font color=red size=+9t>辑会<font color=blue>议比较</font>ss</a>"; li_len = 20; } htmlSubstring mySubstr = new htmlSubstring(); String resultStr = mySubstr.htmlSubstr(htmlStr,li_len); System.out.println("Original String is: " + htmlStr); System.out.println("First " + li_len + " characters are: " + resultStr); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -