Προς το περιεχόμενο

String Reading/Parsing in Java


Snolly

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα σε όλους,

χθες ξεκίνησα να ασχολούμαι με το Xcode της Apple για να φτιάξω ένα μικρό πρόγραμμα σε Cocoa και Java. Java γνωρίζω καλά Cocoa & Objective C καθόλου. Διάβασα λοιπόν τα tutorial έχτισα ένα μικρό GUI (πολύ όμορφο φτου στα Apple) και είδα πως σχετικά εύκολα ενσωματώνω classes από Java χωρίς την παραμικρή τροποποίηση.

 

Μέχρι τώρα το πρόγραμμα κάνει τα εξής:

 

Δίνει ο χρήστης ένα string σε ένα textfield. Από εκεί εγώ κατασκευάζω ένα URL και "κατεβάζω" όλο το HTML της εν λόγω σελίδας σε ένα τεράστιο stream. Απο εκεί χρησιμοποίησα έναν HTML Parser και μου καθαρίζει όλο τον HTML code και μένουν μόνο πληροφορίες που είχε η σελίδα επάνω σε σχετικά ευανάγνωστη μορφή μέσα σε ένα String. Εγώ από αυτή την πληροφορία θέλω μερικές λέξεις που είναι ΠΑΝΤΑ διαδοχικά η μία μετά την άλλη και μάλιστα σε διαφορετική γραμμή. Μπορώ επίσης να ξεχωρίσω που ξεκινάν και που τελειώνουν. Φαίνεται κάπως έτσι:

 

>
Text I don't care about, text I don't care about
some more text I don't care about, text I don't care about
...
even more text I don't care about, text I don't care about
START FLAG WORD -> //Πάντα η ίδια λέξη θα είναι εδώ την οποία δε χρειάζομαι.
Word I need A
Word I need B
Word I need C
...
Word I need Z
END FLAG WORD -> //Πάντα ή ίδια λέξη την οποία δε χρειάζομαι
a lot of text millions of lines I dont't and will never ever care about.

 

Εγώ θέλω να απομονώσω μόνο τις Word I need - Έχει κανείς καμιά ιδέα πως θα μπορούσε να γίνει αυτό;

 

 

Να χρησιοποιήσω Strings ή Streams; Μπορεί να δώσει κανείς ένα παραδειγμά σε κώδικα; (πάντα Java).

 

Ευχαριστώ.

Δημοσ.

Αυτό με μια γρήγορη ματιά μου θυμίζει κάτι από EDI.

 

Τα words που θες είναι separated με κάποιον χαρακτήρα? Έχουν κάποιο standar length ίσως?

-edit-

τώρα είδα πως ξεκινάνε σε διαφορετική γραμμή καθώς επίσης ότι μπορείς να ξεχωρίσεις που ξεκινάνε και τελειώνουνε. Εφόσον μπορείς να ξεχωρίσεις κάθε φορά που ξεκινάει και που τελειώνει η κάθε λέξη τότε φτιάξε έναν Iterator για να διαβάζεις ένα ένα τα words που θες.

Ρίξε και μια ματιά στην String#split(String) αν πιστεύεις ότι μπορεί να σου φανεί χρήσιμη.

Δημοσ.

 

 

Από το API

 

Each byte read from the input stream is regarded as a character in the range '\u0000' through '\u00FF'. The character value is used to look up five possible attributes of the character: white space, alphabetic, numeric, string quote, and comment character. Each character can have zero or more of these attributes.

 

Εμένα το διαχωριστικό είναι το new line...

 

EDIT: Υπάρχει αυτό το method eolIsSignificant - Determines whether or not ends of line are treated as tokens.

 

Σε ευχαριστώ πολύ είναι ό,τι έψαχνα!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...