在追加之前比较NSString和NSTextView范围

时间:2014-01-28 20:45:24

标签: objective-c nstextview nsrange

在Objective-C中编码,我在我的代码中将文本附加到名为subCap的NSTextView对象,如下所示:

[[[_subCAP textStorage] mutableString]appendString:[NSString stringWithFormat:@"%@", subcapLine]];

subcapLine将有两个时间码值,例如:“01:00:00:00 01:00:01:00”由单个空格分隔,然后是换行符(\ n),然后是“ONC314_001_001”之类的字符串然后是两个换行符(\ n \ n)。

最终结果将创建一个类似于:

的列表

01:00:00:00 01:00:01:00
ONC314_001_001

01:00:01:00 01:00:02:00
ONC314_001_002

01:00:02:00 01:00:03:00
ONC314_001_003

等等,等等。

这是一个子标题文件,用于在视频文件中的适当时间放置文本(ONC314行),如时间码所示。

但是,我已经确定存在一组奇怪的情况,其中时间码对可能与前一个时间码对相同,如果发生这种情况,我想跳过附加该行。

所以,我的问题是,考虑到时间码总是每个11个字符,用空格分隔,任何人都可以想到一种方法,我可以很容易地抓住先前的TC对并将其与我在subcapLine中的当前对进行比较。我准备追加?问题是子标题的文本可能是随机长度。在我的例子中,它们是相同的,但情况并非总是如此。

如果我需要在编译subcapLine之前进行检查,我也可以这样做,但我只是认为使用某种范围从最后写入的行中获取前一对TC可能会更加光滑。 NSTextView对象并与我要追加的行中的TC进行比较(同样,使用范围?)?

非常感谢的想法和建议。

Chris Conlee

1 个答案:

答案 0 :(得分:1)

在添加时间码之前添加时间码存储文本字段字符串的长度,这样您就可以获得要添加的时间码的偏移量。

然后在添加新的时间码之前,您可以简单地使用您存储的前一个偏移量来提取子字符串并进行字符串比较,看看时间码是否相同。

无论字幕的长度如何,这都应该允许您始终拥有前一个时间码的偏移量。