Avatar billede theill Nybegynder
03. april 2000 - 14:46 Der er 2 kommentarer og
1 løsning

"newline to br" metode - forbedringer?

Jeg har lige lavet en metode der omsaetter newline (#13#10) til <br>, saa man kan faa de rigtige lineskift, hvis teksten bliver printet ud i en browser.

Jeg ville vaere glad, hvis folk kunne komme med forslag til optimeringer, da det er meningen metoden skal performe saa hurtigt som muligt.

/**
*    Converts all newlines (#13#10) in a text to <br> tags. This makes it
*    possible to print the text in a HTML document with the actual line
*    breaks.
*   
*    @param    text    String with text which should be <br>'arised.
*    @return    String with text containing <br> tags instead of actual new
*            lines or null if something went wrong.
*   
*/
public synchronized static String newLineToBR(String text)
{
    if (text == null)
    {
        return null;
    }
   
    int len = text.length();
    char[] buffer = new char[len];
    text.getChars(0, len, buffer, 0);
   
    int i = 0;
    while (i < len-1)
    {
        if ( (buffer[i] == '\u0013') && (buffer[i+1] == '\u0010') )
        {
            // replace with '<br>' - push array chars a couple of chars
            len += 2;
            char[] tmp = new char[len];
           
            // put in start of array
            System.arraycopy(buffer, 0, tmp, 0, i);
           
            // apply <br> text
            tmp[i] = '<';
            tmp[i+1] = 'b';
            tmp[i+2] = 'r';
            tmp[i+3] = '>';
           
            // don't have to check our newly inserted text
            i += 4;
           
            // put in rest of array
            System.arraycopy(buffer, i-2, tmp, i, len-i);
           
            // use new array
            buffer = tmp;
           
        }
        else
        {
            i++;
        }
    }
   
    return new String(buffer);
   
} // > public synchronized static String newLineToBR(String text)
Avatar billede andersb Nybegynder
05. april 2000 - 15:06 #1
Har du overvejet at bruge nogle af de mange metoder, der findes i klasserne String og StringBuffer?
Så skal du ikke selv fedte rundt med indekser, arraycopy og lign.
Vedr. performance, så tror jeg, at de har lavet metoderne i String og StringBuffer nogenlunde godt!
Hvorfor er din metode synchronized?
- Anders
Avatar billede theill Nybegynder
15. april 2000 - 20:02 #2
Ja, og jeg har endda kigget dybt i implementeringen (fra jdk1.2.2). Men jeg vil have, at metoden skal vaere saa hurtig som mulig, saa jeg ville helst undgaa en hver form for ekstra check, array-kopieringen, etc.

synchronized ... ja, okay - det burde den heller ikke have vaeret.

Hvordan gaar det ellers paa skolen? Har du styr paa tropperne? :o)
Avatar billede theill Nybegynder
01. august 2000 - 00:17 #3
Ingen aktivitet paa spoergsmaalet i lang tid, saa jeg ser det hermed som afsluttet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester