package com.test;
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Queue;
import com.sowwa.util.FileHandle;
public class Pet {
private Queue<String> queue_start = new ArrayDeque<String>();
private Queue<String> queue_last = new ArrayDeque<String>();
static int position = 0;
private static String temContent = "";
static int preDiv = 0;
static int afterDiv = 0;
static int temIndex = 0;
static int strckCount = 1;
String allContent = "";
public void setContent(String allContent){
this.allContent = allContent;
}
public void execute(String content){
preDiv = content.indexOf("<div");
afterDiv = content.indexOf("</div>");
if(preDiv == -1 && afterDiv == -1){
return;
}
if(preDiv < afterDiv && preDiv != -1){
temContent = content.substring(preDiv+4,content.length());
temIndex = temContent.indexOf(">");
temContent = temContent.substring(0,temIndex);
if(temContent.indexOf("<") != -1){
temContent = "";
execute(content);
return;
}
temContent = "";
content = content.substring(preDiv+5+temIndex,content.length());
position += preDiv;
queue_start.add("0." + position + "." + (5+temIndex) );
position += 5+temIndex;
}else{
content = content.substring(afterDiv+6,content.length());
position += afterDiv;
queue_start.add("1." + position + ".6" );
position += 6;
}
execute(content);
}
public void echo(){
System.out.println("size="+queue_start.size());
handle(queue_start);
System.out.println("size="+queue_last.size());
StringBuffer content = new StringBuffer();
// while(!queue_last.isEmpty()){
// content.append(queue_last.poll() + "\n");
// }
// FileHandle.writetoFile(content.toString(), "D:/a.txt");
handle_otherContent();
}
private static int divNum = 1;
private static int closeNum = 0;
public void handle(Queue<String> queue){
String firstString = "";
String lastString = "";
String temStr = "";
int[] temDiv = null;
int[] closeDiv = null;
Queue<String> temQueue = new ArrayDeque<String>();
if(!queue.isEmpty()){
firstString = queue.poll();
divNum = 1;
closeNum = 0;
while(!queue.isEmpty()){
temStr = queue.poll();
if(temStr.startsWith("0")){
divNum++;
}else{
closeNum++;
}
if(divNum == closeNum){
lastString = temStr;
temDiv = returnCut(firstString);
closeDiv = returnCut(lastString);
if(closeDiv[1] - temDiv[1] < strckCount){
divNum = 1;
closeNum = 0;
handle(temQueue);
temQueue = new ArrayDeque<String>();
}else{
queue_last.add(firstString + "." + (closeDiv[1] - temDiv[1]));
if(divNum != 1){
divNum = 1;
closeNum = 0;
handle(temQueue);
temQueue = new ArrayDeque<String>();
queue_last.add(lastString + ".0");
}else{
divNum = 1;
closeNum = 0;
queue_last.add(lastString + ".0");
handle(temQueue);
temQueue = new ArrayDeque<String>();
}
}
}else{
temQueue.add(temStr);
}
}
handle(temQueue);
}else{
return;
}
}
int po = 0;
StringBuffer finalContent = new StringBuffer();
String temVal = "";
String currentVal = "";
int offset = 0;
void handle_otherContent(){
if(!queue_last.isEmpty()){
temVal = queue_last.poll();
currentVal = queue_last.poll();
int[] temDiv = null;
int[] closeDiv = null;
while(!queue_last.isEmpty()){
temDiv = returnCut(temVal);
closeDiv = returnCut(currentVal);
temVal = currentVal;
currentVal = queue_last.poll();
if(temDiv[0] == 0 && closeDiv[0] == 1){
cutContent(temDiv[1],closeDiv[1] + closeDiv[2]);
}else{
cutContent(temDiv[1] + temDiv[2],closeDiv[1]);
}
}
}
}
public void cutContent(int startcut,int endcut){
try{
int len = allContent.length();
String cutContent = allContent.substring(startcut - offset,endcut - offset);
int cutLen = cutContent.length();
String takePo = "{" + (po++) + "}";
allContent = allContent.substring(0,startcut - offset) + takePo + allContent.substring(endcut - offset,len);
offset += cutLen;
offset -= takePo.length();
}catch(Exception e){
e.printStackTrace();
}
}
public int[] returnCut(String content){
String[] str = content.split("\\.");
int len = str.length;
int[] temCut = new int[len];
for(int i = 0; i < len; i++){
temCut[i] = Integer.parseInt(str[i]);
}
return temCut;
}
public static void main(String[] args) throws IOException{
String content = FileHandle.readFile("F:/spring-framework-reference.html");
// String content = "<div>aa</div>ass" +
// "<div>dddd</div>" +
// "<div>sdsd" +
// "<div>ds</div><div>3222</div><div>iiooppow<div>" +
// "<div>aaa</div>2321dsfds</div></div></div>";
Pet p = new Pet();
p.setContent(content);
p.execute(content);
p.echo();
System.out.println(p.allContent);
//-Xms100m -Xmx500m -XX:PermSize=100M -XX:MaxNewSize=100m -XX:MaxPermSize=150m
}
}
div嵌套
最新推荐文章于 2024-09-15 22:25:23 发布