Toon posts:

[java] Stringtokenizer moet " " overslaan

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem:

ik heb een String die er als volgt uit ziet:
code:
1
Chicago, San Diego

Ik moet dus de string opbreken bij de ", ".
Dus ik heb de volgende Stringtokenizer gebruikt:
code:
1
2
3
4
5
StringTokenizer st = new StringTokenizer(line, ", ");
while (st.hasMoreTokens()){
              result[rij] = st.nextToken();
rij++
}

Hij ziet de ", " dus apart, zodat ie de " " ook pakt..

Hoe kan ik dit oplossen?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik denk dat de fout ergens anders zit.

Voer dit namelijk maar eens uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.StringTokenizer;

public class Test {

  public static void main(String[] ps) {

    String line = "Chicago, San Diego";
    StringTokenizer st = new StringTokenizer(line, ", ");
    while (st.hasMoreTokens()){
    System.out.println(st.nextToken());
    }
  }
}

Resultaat:"
code:
1
2
3
Chicago
San
Diego

Over het algemeen is het gevaarlijk om het resultaat zo in een array te stoppen: je weet niet of de array wel groot genoeg is ivm de vaste grote van de array. Je pikt eenvoudig alle tokens, wat er in dit geval dus drie zijn.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
"San Diego" moet 1 string zijn...
en niet meerdere, zoals 2 nu...

dat is mijn probleem, het probleem met de grote van de array heb ik al op een andere manier gedaan ;)

Verwijderd

tokenize je toch alleen op "," ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

als je strings altijd uit 2 delen bestaan met daartussen een ", ", kun je natuurlijk ook gewoon mbv indexOf de string opsplitsen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Als je dan alleen tokenized op de komma en de losse tokens trimmed (String.trim haalt whitespace weg aan de randen) werkt het waarschijnlijk :) .

edit: hum, paar dezelfde ideeen tegelijk ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Hoe kom je trouwens aan die string? Data versturen op deze manier met stings is niet altijd aan te bevelen, misschien kan je een beter object aankrijgen dan een string.

Verwijderd

Topicstarter
de data staat in een textfile, dus met readline() haal ik er een regel uit.

Dan heb ik dus 1 grote string....
en die splits ik op ;)

het is trouwens al gelukt, ik heb inplaats van een " " een tab in de textfile gebruikt.... en die is te lezen door als delim in de StringTokenizer ",\t" aan te geven :)

In ieder geval bedankt voor alle hulp ;)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 06 juni 2002 17:40 schreef Iggy het volgende:
de data staat in een textfile, dus met readline() haal ik er een regel uit.

Dan heb ik dus 1 grote string....
en die splits ik op ;)

het is trouwens al gelukt, ik heb inplaats van een " " een tab in de textfile gebruikt.... en die is te lezen door als delim in de StringTokenizer ",\t" aan te geven :)

In ieder geval bedankt voor alle hulp ;)
Jij hebt een echte parser nodig ;) zie http://www.sablecc.org voor een fantistische parser generator :)

Verwijderd

Topicstarter
hehe

als het niet voor school was geweest misschien wel ja ;)

maar ik moet alles zelf coden (8>

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op donderdag 06 juni 2002 18:15 schreef Iggy het volgende:
hehe

als het niet voor school was geweest misschien wel ja ;)

maar ik moet alles zelf coden (8>
Voor een parser generator heb je toch echt nog wel wat kennis nodig hoor.. trust me :) En ik durf te wedden dat je leraar het niet afkeurt als jij een parser generator gebruikt om je text in te lezen. (alleen als de goeie man niet snapt wat het inhoud)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Als je de api docs over StringTokenizer had gelezen, dan had je geweten dat de StringTokenizer op elk individuaal karakter splitst. ", " betekent splitsen op "," en op " ".
Pagina: 1