• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Objective-C: Einlesen und Schreiben von externen Datein

FFder1.

Tokyo Rose
Registriert
01.02.09
Beiträge
70
Hallo,

für die Realisierung meines ersten sinnvollen Programms :) unter Objective-C müsste ich wissen, wie man Text-Dateien (am besten PDF; aber auch plain txt ist möglich) ausliest und wie man dann Ergebnisse des Programms in anderen Datei speichert, die dann noch bei weitern Läufen aktualisiert werden könnte.

Konkret geht es darum, die Häufigkeit einzelner Wörter in PDFs zu bestimmen und dann auszuwerten.

Gruß Fabian
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

die Frage ist zu global und zu unpräzise.

Viele Grüße
 

FFder1.

Tokyo Rose
Registriert
01.02.09
Beiträge
70
TEXT-DATEI -> Wörter als Strings importieren->Analyse->Speicherung der neuen Ergebnisse in Datei
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.560
Im allgemeinen Fall enthalten PDF-Dateien keinen Text, sondern nur das Druckabbild eines Textes.

Zur Frage: Angenommen, die Textdatei wäre im UTF8-Code in der Datei /Users/Benutzer/Beispiel.txt gespeichert, dann könnte man mit folgendem Programm anfangen zu arbeiten:

Code:
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString            *fileContents, *currentString = nil;
        NSMutableDictionary *frequenciesByWord;
        NSScanner           *scanner;
        
        fileContents = [NSString stringWithContentsOfFile: @"/Users/Benutzer/Beispiel.txt" encoding: NSUTF8StringEncoding error: NULL];
        frequenciesByWord = [[NSMutableDictionary alloc] init];
        scanner = [[NSScanner alloc] initWithString: fileContents];
        [scanner setCharactersToBeSkipped: [[NSCharacterSet alphanumericCharacterSet] invertedSet]];
        while (! [scanner isAtEnd]) {
            currentString = nil;
            if ([scanner scanCharactersFromSet: [NSCharacterSet alphanumericCharacterSet] intoString: &currentString] &&
([currentString length] > 0)) {
                NSString    *normalizedString;
                NSNumber    *currentCount;
                
                normalizedString = [currentString uppercaseString];
                currentCount = [frequenciesByWord objectForKey: normalizedString];
                if (! currentCount)
                    [frequenciesByWord setObject: @1 forKey: normalizedString];
                else
                    [frequenciesByWord setObject: @([currentCount integerValue] + 1) forKey: normalizedString];
            }
        }
        for (NSString *word in [frequenciesByWord keysSortedByValueUsingSelector: @selector(compare:)])
            printf("%s: %lld\n", [word UTF8String], [[frequenciesByWord objectForKey: word] longLongValue]);
    }
    return 0;
}

Eine nette kleine Fingerübung … :)
 
  • Like
Reaktionen: doc_holleday