Avatar billede willi Nybegynder
26. november 2002 - 18:26 Der er 4 kommentarer og
1 løsning

String tokenizer el. substring

Hvis jeg skal have alle citater fra en tekst som er placeret ml. <  > faner tokenizer så ikke blot det første.

Dvs en tekst:

Her kan du <oprette et spørgsmål> på Eksperten. Husk at vælge den <rigtige kategori> og at spørgsmål kun må oprettes 1 gang.

Dvs at der kommer til at se sådan ud:

<oprette et spørgsmål> på Eksperten. Husk at vælge den

<rigtige kategori> og at spørgsmål kun må oprettes 1 gang.

Eller er der en syntax så man kan vælge det som er placeret mellem to forskellige tegn (s, "<"... og et eller andet)?
Avatar billede arne_v Ekspert
26. november 2002 - 19:05 #1
Der  er mange muligheder. Her er en:

public class Pars {

    private static void test(String s) {
        boolean quote = false;
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            switch(c) {
                case '<':
                    quote = true;
                    break;
                case '>':
                    quote = false;
                    break;
                default:
                    if(quote) {
                        System.out.print(c);
                    }
                    break;
            }
        }
        System.out.println();
        return;
    }

    public static void main(String[] args) {
        test("aa<bb>cc<dd>");
    }
}
Avatar billede arne_v Ekspert
26. november 2002 - 19:06 #2
Mit eksempel skriver dem kun ud i en enkelt linie.

Hvis du vil bruge dem, så samler du dem op i en
StringBuffer og processer den ved >.
Avatar billede willi Nybegynder
26. november 2002 - 20:40 #3
Hej Arne.
...Men der er altså ikke tale om en parameter til tokenizer.
Dét gik mit spørgsmål på - om tokenizer.
Men med dit bidrag, går jeg ud fra at tokenizer så ikke kan benyttes i denne sammenhæng.
Det må du meget gerne lige kommentere. Jeg går ud fra du ved noget om det.

Men mange tak for hjælpen. Det fungere oger til at gennemskue :-)
Avatar billede willi Nybegynder
26. november 2002 - 20:57 #4
Aha. Det er en metode i tokenizer. Måske skulle jeg læse lidt mere. Men der er så meget og bøgerne så tykke og skriften så lille  ;-)
Avatar billede carstenknudsen Nybegynder
27. november 2002 - 11:11 #5
Hvis du skal søge efter citater så er det meget
lettere at benytte regulære udtryk, så bliver
din kode komprimeret betragteligt.
Du skal blot huske at inkludere et import statement:
import java.util.regex.*;
så kan du gøre således:
    Pattern p = Pattern.compile( "\\<.*?\\>" );
    String text = "Dette er <en> <tekst> med flere <citater>.";
    Matcher m = p.matcher( text );
    while ( m.find() ) {
        System.out.println(m.group());
    }
du skal bare lige fjerne < og >  med substring.
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