将NSAttributedString转换为纯文本

Rog*_*ger 31 cocoa nsattributedstring

我有一个NSData包含NSAttributedString源自a的属性text()的实例NSTextView.我想将属性字符串转换为普通字符串(NSString)而不进行任何格式化以进行一些文本分析(在转换时我无法访问原始NSTextView及其NSTextStorage实例).

最好的方法是什么?

编辑:

出于好奇,我检查了以下结果:

[[[self textView] textStorage] words]
Run Code Online (Sandbox Code Playgroud)

这对于进行一些文本分析似乎很方便.结果数组包含NSSubTextStorage的实例(下面的单词"Eastern"):

东部{NSFont ="\"LucidaGrande 11.00 pt.P [](0x7ffcaae08330)fobj = 0x10a8472d0,spc = 3.48 \""; NSParagraphStyle ="对齐0,LineSpacing 0,ParagraphSpacing 0,ParagraphSpacingBefore 0,HeadIndent 0,TailIndent 0,FirstLineHeadIndent 0,LineHeight 0/0,LineHeightMultiple 0,LineBreakMode 0,Tabs(\n 28L,\n 56L,\n 84L,\n 112L,\n
140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n
308L,\n \n 336L \n),DefaultTabInterval 0,Blocks(null),Lists(null) ,BaseWritingDirection -1,HyphenationFactor 0,TighteningFactor 0.05,HeaderLevel 0"; }

NSSubTextStorage可能是一个私有类,因为我找不到任何文档.它还保留所有格式.

CRD*_*CRD 60

如果我理解正确的话,你有NSData,比如说data,含有编码NSAttributedString.要扭转这个过程:

NSAttributedString *nas = [[NSAttributedString alloc] initWithData:data
                                                           options:nil
                                                documentAttributes:NULL
                                                             error:NULL];
Run Code Online (Sandbox Code Playgroud)

并获得没有属性的纯文本,然后执行:

NSString *str = [nas string];
Run Code Online (Sandbox Code Playgroud)

  • 哦,我的...我必须出去呼吸一下新鲜空气.谢谢你的回答!不敢相信我没看到自己...... [自我踢] (7认同)

Jus*_*ely 14

更新Swift 2.2/Swift 3:

attributedText.string
Run Code Online (Sandbox Code Playgroud)