• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> 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.574
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