分割归属string并保留格式

你怎么能拿一个现有的NSAttributedString,并根据预定义的分隔符来划分它,同时保持格式? 似乎componentsSeparatedByString不会在NSAttributedString上运行。

我目前的解决方法产生正确的点拆分,但只输出一个NSString。 因此失去格式。

NSData *rtfFileData = [NSData dataWithContentsOfFile:path]; NSAttributedString *rtfFileAttributedString = [[NSAttributedString alloc] initWithData:rtfFileData options:@{NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType} documentAttributes:nil error:nil]; NSString *rtfFileString = [rtfFileAttributedString string]; NSString *importSeparator = @"###"; // Wish I could do this // NSArray *separatedArray = [rtfFileAttributedString componentsSeparatedByString:importSeparatorPref]; NSArray *separatedArray = [rtfFileString componentsSeparatedByString:importSeparatorPref]; NSLog( @"Separated array: %@", separatedArray ); 

您可以使用分割的非属性string来分割属性string。 一种select是:

 NSData *rtfFileData = [NSData dataWithContentsOfFile:path]; NSAttributedString *rtfFileAttributedString = [[NSAttributedString alloc] initWithData:rtfFileData options:@{NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType} documentAttributes:nil error:nil]; NSString *rtfFileString = [rtfFileAttributedString string]; NSString *importSeparator = @"###"; NSArray *separatedArray = [rtfFileString componentsSeparatedByString:importSeparatorPref]; NSMutableArray *separatedAttributedArray = [NSMutableArray arrayWithCapacity:separatedArray.count]; NSInteger start = 0; for (NSString *sub in separatedArray) { NSRange range = NSMakeRange(start, sub.length); NSAttributedString *str = [rtfFileAttributedString attributedSubstringFromRange:range]; [separatedAttributedArray addObject:str]; start += range.length + importSeparator.length; } NSLog(@"Separated attributed array: ", separatedAttributedArray);