从RTF文件中提取“语言上重要的”字符

时间:2012-01-17 04:26:24

标签: objective-c text wrapper nsdata rtf

我编写了一个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 :(得分:0)

您可以尝试使用RTF magic number来识别文件类型,例如unix命令 file ,或者您可以使用libenca之类的库。

以下是文件解析和magic numbers的一般说明。