我正在编写一个TextFormatter,用HTML标签替换特殊字符

时间:2015-11-13 02:50:06

标签: java html

我正在编写一个TextFormatter,用HTML标签替换特殊字符。

"_" = "< i >" and "< /i >"
"*" = "< b >" and "< /b >"

所以..我的代码如下..

public String convertBold() {
    if (countStrings("_") % 2 == 1) 
        return 1;

    String tag = "<b>";
    String result = "";
    while (find String("_", psn) >= 2) {
        int newPsn = findString("_", psn);

        // Copy the code before the "_" into the result
        result = result + line.substring(psn, newPsn);

        // Add the tag and change the tag
        result = result + tag;
        if (tag.equals("<B>")) 
            tag = "</B>";
        else 
            tag = "<B>";

        //update the psn
        psn = newPsn++;
    }

    //copy the rest of the string
    result = result + line.substring(psn);
    return result;
}

我需要帮助的是HTML中的嵌套标记可能会导致错误。我不明白如何在HTML中正确嵌套标签,因为如果我在插入新标签之前没有关闭标签,则会导致标签错误。我知道我用这句话的方式可能会让它有点混乱,但我会感激任何帮助,如果我能回答任何问题以清理任何混乱让我知道。

提前谢谢! - Vexial

1 个答案:

答案 0 :(得分:1)

假设您的标记文本正确无误:

/**
*@param s string to HTML
*
*/
String convert(String s){
  while(s.indexOf("_")!= -1 ||s.indexOf("*") != -1){
           if(s.indexOf("_") != -1){
               s = s.replaceFirst("\\_", "<i>");
               s = s.substring(0, s.lastIndexOf("_"))+"</i>"+s.substring(s.lastIndexOf("_")+1);
           } 

           if(s.indexOf("*") != -1){
               s = s.replaceFirst("\\*", "<b>");
               s = s.substring(0, s.lastIndexOf("*"))+"</b>"
               +s.substring(s.lastIndexOf("*")+1);
           } 

     }//end while

return s;
}