在NSString objc中获取不可见的十进制值

时间:2015-10-06 01:18:26

标签: objective-c string decimal invisible

我有一个带有随机名称的字符串,其中包含一个不可见的十进制值作为前缀。小数=名称长度。我需要检索名称。显然它们的长度不同。我想要一个数组中的名字,所以我的想法是使用stringByReplacingOccurrencesOfString:withString。我在名称的开头和结尾处实现了“trunk”一词。虽然我无法访问名称末尾对应的索引(十进制值),但这是我的代码:

trimmed1 = [[trimmed1 stringByReplacingOccurrencesOfString:sp withString:@"trunk"]mutableCopy];

NSString *trunk = @"trunk%d";// add the ghost decimal at the end of prefix in order to get its value;

NSRange range =[trimmed1 rangeOfString:trunk];

int ghost= [trunk characterAtIndex:5];

NSMutableString *mu = [NSMutableString stringWithString:trimmed1];

[mu insertString : @"trunk" atIndex :range.location+range.length+ ghost];

我收到错误[__NSCFString insertString:atIndex:]: Range or index out of bounds

1 个答案:

答案 0 :(得分:0)

您误解了%d的含义。

在用于创建字符串的格式中,它表示“插入格式为字符串的整数参数的值”。

匹配一个字符串与另一个字符串时,它意味着“匹配字符%d”,即。无论如何它并不特别。

您收到错误,因为您的字符串不包含字符“trunk%d”。如果您检查rangeOfString:的返回值,您会发现它返回了失败指示 - 请阅读文档以了解如何测试该值。

对于尝试查看NSString方法rangeOfCharactersFromSet:时匹配任意十进制数的简单任务。

您还可以使用课程NSScannerNSRegularExpression解决此问题。

HTH