读书人

java处理字符串!请高手探讨!不甚感激

发布时间: 2012-03-21 13:33:14 作者: rapoo

java处理字符串!!!!请高手探讨!不甚感激!
比如这串字符:

Java code
第一博物品科以教成能造各本模型之技宗旨  第二本科生年二十以上<BLX>三十以下</BLX>身健性行端者合格  第三本科生在京由督局在外省由各提使司文理通<B>曾<I><JHX>算</JHX></I>具有<XHX>高等小</XHX>堂以<BLX>上之</BLX>程度</B>者咨送  第四本科分科一本科二科本科三年科年<Notation>27</Notation>第五本科生名定三十各以外四十各以  第六科目


处理的结果为:

XML code
        <Text>第一博物品科以教成能造各本模型之技宗旨  第二本科生年二十以上</Text><BLX>三十以下</BLX><Text>身健性行端者合格  第三本科生在京由督局在外省由各提使司文理通</Text><B><Text>曾</Text><I><Text></Text><JHX>算</JHX><Text></Text></I><Text>具有</Text><XHX>高等小</XHX><Text>堂以</Text><BLX>上之</BLX><Text>程度</Text></B><Text>者咨送  第四本科分科一本科二科本科三年科年<Text><Notation>27</Notation><Text>第五本科生名定三十各以外四十各以  第六科目</Text>




[解决办法]
这个第一个字符串是什么文件类型的?
txt还是xml?
先用流输出,
然后调用String的拆分,
替代等方法将字符串修改,
再输入到一个xml文件之中
(在不依赖xml解析的情况下)
[解决办法]
针对上面的示例,简单写了个,需测试其他情况,有问题,就改改;
Java code
static boolean flag = false;    public static void main(String[] args) {        String value = "第一博物品科以教成能造各本模型之技宗旨  第二本科生年" +                "二十以上<BLX>三十以下</BLX>身健性行端者合格  第三本科生在京由督局在外省由" +                "各提使司文理通<B>曾<I><JHX>算</JHX></I>具有<XHX>高等小</XHX>堂以" +                "<BLX>上之</BLX>程度</B>者咨送  第四本科分科一本科二科本科三年科年" +                "<Notation>27</Notation>第五本科生名定三十各以外四十各以  第六科目";                System.out.println(process(value));    }        public static String process(String value){        StringBuilder sb = new StringBuilder();        if(value.charAt(0) != '<'){            sb.append("<TEXT>");        }                char[] charArr = value.toCharArray();                int offset = 0;        for(int i = 0; i < charArr.length;){            if(charArr[i] == '<'){                offset = processSpecial(charArr, i, sb);                i += offset;            }else{                sb.append(charArr[i]);                i++;            }        }                if(flag)sb.append("</TEXT>");                return sb.toString();    }    private static int processSpecial(char[] charArr, int i, StringBuilder sb) {        int index = 1;        StringBuilder tempSB = new StringBuilder();                while(charArr[i] != '>'){            tempSB.append(charArr[i]);                        index += 1;            i += 1;        }                tempSB.append(">");                if(tempSB.toString().equalsIgnoreCase("<B>")           || tempSB.toString().equalsIgnoreCase("<I>")){            if(i > 2){                tempSB.insert(0, "</TEXT>");            }            tempSB.append("<TEXT>");        }else if(tempSB.toString().equalsIgnoreCase("</B>")                   || tempSB.toString().equalsIgnoreCase("</I>")){            tempSB.insert(0, "</TEXT>");            if(i < charArr.length - 3){                tempSB.append("<TEXT>");            }        }else if(tempSB.toString().contains("/")){            tempSB.append("<TEXT>");            flag = true;        }else{            tempSB.insert(0, "</TEXT>");            flag = false;        }                sb.append(tempSB.toString());                return index;    } 

读书人网 >J2EE开发

热点推荐