Snollygoster wrote: |
Καλημέρα σε όλους, χθες ξεκίνησα να ασχολούμαι με το 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).
Ευχαριστώ.
|
|
Αν έχεις όλη την πληροφορία μέσα σε ένα string όπως αναφέρεις παρπάνω τότε το μόνο που χρειάζεται να κάνεις είναι να χρησιμοποιήσεις συναρτήσεις πάνω σε αυτό για να πάρεις το substring που σε ενδιαφέρει. Έτσι εάν έχεις το dataString το οποίο έιναι το αρχικό σου String μπορείς να κάνεις τα ακόλουθα.
String startFlag = "Start flag word";
String endFlag = "End flag word";
int start = dataString.indexOf(startFlag); // Σου επιστρέφει το σημείο μέσα στο dataString όπου βρίσκεται η λέξη
int end = dataString.indexOf(endFlag, start+1); //Μία από τα ίδια ψάχνοντας όμως από το σημείο που βρέθηκε το Start flag word και μετά
String finalString = dataString.subString(start+startFlag.length(),endFlag);
Στο finalString θα περιέχονται τα:
Word I need A
Word I need B
Word I need C
...
Word I need Z
Αυτό το κάνεις parse όπως σε βολεύει τώρα.
Προσοχή μόνο να κάνεις τους απαραίτητους ελέγχους κατά την διαδικασία. Ελπίζω να βοήθησα.