早上在学习jsp标签的时候,一段java代码把我难住了,没办法,我的代码能力确实不厉害,再者java也没系统的学过,也不怕高手朋友笑话,写出来的目的也就是图个乐子。

java代码:

public void doTag()throws JspException,IOException{
        JspWriter out=getJspContext().getOut();
        StringWriter sw=new StringWriter();
        getJspBody().invoke(sw);
        String text=sw.toString();
       
        int len=search.length();
        int oldIndex=0,newIndex=0;
        while((newIndex=text.indexOf(search,oldIndex))>=0){
            if(newIndex<oldIndex){
                break;
            }
            out.print(text.substring(oldIndex, newIndex)+"<br/>");
            //out.print("PrintLetter:<b><font color='blue'>"+search+"</font></b>");
            oldIndex=newIndex+len;
        }//while
    out.print(text.substring(oldIndex)+"<br/>");
    }

jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<html>

<body>
    <demo:market search="sh">
    she sells sea shells on the sea shore!
    </demo:market>
  </body>
</html>

由于java代码中直接输出的内容,所以利用注释的办法可以很明白的知道这段代码完成了什么样的功能。

所以最终我们知道,程序只是利用了String类下面的两个方法,一个是indexOf(),即查找所查找的子字符串的位置,另一个是字符串的切割,substring(),把句子中的关键字给截取出来,最后再把他们拼到一起。

还有的一点就是substring(0,0)是空字符串。