Page 1 of 1
StringTokenizer Java
Posted: Wed Jan 28, 2009 10:18 am
by sandra
Έχω το εξής πρόβλημα. Πρέπει να διαβάσουμε δεκάδες κείμενα μέσω Java και να τα επεξεργαστούμε ώστε να απομονώσουμε τις τελείες τους. Χρησιμοποιούμε StringTokenizer με delimiter την τελεία και όλα καλά μέχρι που συναντάμε το εξής: Όταν φτάσει σε αποσιωπητικά (...) κρατάει το κάτι που είχε πριν την 1η τελεία και το κάτι μετά την 3η. Προφανώς με ενδιαφέρουν όλες οι τελείες, πώς θα μπορέσω να το μοντάρω ώστε να μην κάνει skip τις ενδιάμεσες?
Re: StringTokenizer Java
Posted: Wed Jan 28, 2009 10:59 am
by Luke
Έχω μια ιδέα αλλά δεν ξέρω αν είναι σωστή ή αν κάνει αυτό που θες. Το σκεπτικό είναι να κάνεις το tokenizing σε 2 φάσεις σε περίπτωση που ο "τύπος" τελειών που έχεις είναι δύο (η '.' και τα '...').
Στο πρώτο πέρασμα θα χωρίσεις το κείμενό σου με βάση τα αποσιωπητικά. Αυτό θα παράγει κάποια Strings τα οποία θα περιέχουν απλές τελείες οπότε σε καθένα από αυτά θα εφαρμόσεις δεύτερη φορά τον tokenizer (όπως ακριβώς κάνεις ως τώρα).
Re: StringTokenizer Java
Posted: Thu Jan 29, 2009 1:58 am
by tZoLe
Μήπως να κάνεις parse αρχικά το κείμενο και να προσθέσεις κάποιο "ειδικό" χαρακτήρα πριν από κάθε τελεία?
Re: StringTokenizer Java
Posted: Thu Jan 29, 2009 2:09 am
by sandra
Τελικά διαλέξαμε την spliter της String. Δεν ξέρω αν είναι τόσο efficient αλλά προς το παρόν όλα καλά...
Re: StringTokenizer Java
Posted: Thu Jan 29, 2009 8:32 am
by maxthebest
sandra ,
εχεις αυτο το προβλημα επειδη χρησιμοποιησεις τον λαθος constructor της stringtokenizer,
ο σωστος ειναι ο τριτος -> StringTokenizer(String str,String delim,true),
την τριτη παραμετρο την βαζεις true για να σου επιστρεφει τα token,
πιθανοτατα η split του string θα ειναι πιο γρηγορη (δεν ρωτας hasNext() ) , απο την αλλη ομως η stringTokenizer ειναι πιο βολικη για εμενα (οποιοδηποτε στιγμη μπορεις να αλλαξεις το delimiter).