开发者

Java substring is switching my positive indexes with negative ones

开发者 https://www.devze.com 2023-04-11 09:57 出处:网络
I have come to the conclusion HTML enabled JTextPanes do not support word wrapping.So I am attempting to provide a home brew method.I will post it on the \'net once it is complete.I may not have the g

I have come to the conclusion HTML enabled JTextPanes do not support word wrapping. So I am attempting to provide a home brew method. I will post it on the 'net once it is complete. I may not have the greatest technique but it should work when it's done. My problem is for some insane (very fustrating) reason when I pass an index to my substring command it switches the actual value with the same value but in negitive and throws a java.lang.StringIndexOutOfBoundsException. But when the variable is sent to the substring comman开发者_运维百科d it is positive for sure. When I substitute the variables for values it works fine. I would appreciate any help. I will include the soure.

    String wordWrap( String oldtxt )    {

        int ishere = 0;         // the current index
        int charlen = 0;        // The current length of the current line
        int beginint = 0;       // Where the text between tags begins
        int endint = 0;         // Where the text between tags ends
        String tempstr = "";    // Where the text is 
        String newoldtxt = "";  // to work around the damned oc error
        String newtxt = "";     // The new text being built
        String divystr = "";    // Temp variable to hold a partial string
        Boolean a = true;       // Needed as temp storage variable

        newoldtxt = oldtxt;

        while( true ) {

            endint = oldtxt.indexOf( "<", endint );

            if( endint == -1 )  {

                endint = oldtxt.length();
                a = false;
            }


            ishere = endint;
            tempstr = oldtxt.substring( beginint, endint );             // Save the text in a temp string

            while( ishere > endint )
            if( tempstr.length() > ( 22 - charlen ))  {                 // Testing for a complete line

//              newtxt += tempstr.substring( ishere, 22 - charlen );        // If a line is complete a line is printed to the pane
                newtxt += tempstr.substring( ishere, 22 );      // If a line is complete a line is printed to the pane
                ishere += 22 - charlen;                                     // Bumping the current index along
                charlen = 0;
                newtxt += "<br />";                                         // Attach a line break
                if( ishere >= tempstr.length() && a == false )
                return newtxt;

            } else if( tempstr.length() < ( 22 - charlen) )  {          // Checking to see if there are fewer then 22 chars in the string

                divystr = tempstr.substring( ishere, tempstr.length() );    // Dump the rest of the substring into the rebuilt string
                newtxt += divystr;                                          // Assign the remaining tempstr characters to newtxt
                charlen += divystr.length();                                // Add stray chars to charlen

                if( a == false )
                    return newtxt;
            }

            beginint = oldtxt.indexOf( ">", ( endint ) );                       // Locate end bracke
            newtxt += oldtxt.substring( beginint, endint );             // Add tag to newtxt
        }
    }
}


When you do the final substring call, the value of endint is 0, which is larger than the start index, resulting in a StringIndexOutOfBoundsException.

// endint is larger than beginint here
newtxt += oldtxt.substring( beginint, endint );
0

精彩评论

暂无评论...
验证码 换一张
取 消