在NSString中保存解析和条带化元数据

时间:2014-11-13 05:36:01

标签: ios parsing nsstring

我有一些动态字符串,我在我的应用程序中。一个例子如下。 (??? = n1 + n2 + n3 + n4)在这个例子中,数字应该是下标。由于我知道这条信息,我手动用NSBaselineOffsetAttributeName绘制它们就好了。但是将来会有字符串,我必须动态地为某些字符串设置下标。我正在寻找一种方法来传递字符串中的下标信息,然后解析此信息,最后删除字符串的这一部分,因为它的元数据。

我该怎么做?我绝对可以要求后端的那个人把我想要的任何形状的字符串传给我。寻找建议。

感谢。

self.statement1String = [NSString stringWithFormat:@"??? = n1 + n2 + n3 + n4"];


NSInteger start = 0;

for (NSString *component in [self.statement1String componentsSeparatedByString:@" "]) {
    NSRange checkRange = NSMakeRange(start, self.statement1String.length - start);
    NSRange range = [self.statement1String rangeOfString:component options:0 range:checkRange];
    NSLog(@"range is %@ for string %@", NSStringFromRange(range), component);
    QWZTerm *term = [[QWZTerm alloc] initWithRangeValue:[NSValue valueWithRange:range]];
    term.termString = [NSString stringWithFormat:@"%@",component];
    [tempArray addObject:term];

    start = range.location + range.length;
}

    [self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
                                               , NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(7, 1)];
    [self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
                                               , NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(12, 1)];
    [self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
                                               , NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(17, 1)];
    [self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
                                               , NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(22, 1)];

0 个答案:

没有答案