Извлечение «лингвистически значимых» символов из файла RTF - PullRequest
0 голосов
/ 17 января 2012

Я написал приложение для Mac, которое перекрестно ссылается на различные входные текстовые и RTF-файлы для создания выходных файлов. Часть этого приложения читает эти файлы и извлекает «лингвистически значимые» символы из файлов TXT или RTF и выпускает их для дальнейшей обработки.

Я использую для этого следующий метод. Это работает хорошо, но мне интересно, возможно, я либо иду далеко или делаю что-то совершенно ненужное.

  inputdatafile = [NSString stringWithContentsOfFile: fullpath encoding: NSASCIIStringEncoding error:&error];

   // test rtf wrapper code right here //
   inputdataNSData=[inputdatafile dataUsingEncoding:NSUTF8StringEncoding];
   wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:inputdataNSData];
   rtfData = [[NSAttributedString alloc]
           initWithRTF:[wrapper regularFileContents] documentAttributes:nil]; 
   inputdatafilefromrtf = [rtfData string];
   if (inputdatafilefromrtf) {
      inputdatafile = [NSMutableString stringWithString:inputdatafilefromrtf];};

inputdatafile загружается с содержимым файла. Программа не знает, что это за текстовый файл, и пытается определить, является ли он RTF. Если это так, он извлекает содержимое файла для дальнейшей обработки. Если нет, он предполагает, что это простой текст и использует это.

Возможно, это работает совершенно случайно и требует обновления или, возможно, есть более эффективные способы сделать это.

Буду очень признателен за любые мысли, которые есть у кого-либо.

1 Ответ

0 голосов
/ 17 января 2012

Вы можете попытаться определить тип файла, используя RTF магическое число , как это делает команда unix file , или вы можете использовать библиотеку, например libenca .

Вот общее объяснение разбора файла и магических чисел .

...