• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.579
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