我有一个带有随机名称的字符串,其中包含一个不可见的十进制值作为前缀。小数=名称长度。我需要检索名称。显然它们的长度不同。我想要一个数组中的名字,所以我的想法是使用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
。
答案 0 :(得分:0)
您误解了%d
的含义。
在用于创建字符串的格式中,它表示“插入格式为字符串的整数参数的值”。
当匹配一个字符串与另一个字符串时,它意味着“匹配字符%d”,即。无论如何它并不特别。
您收到错误,因为您的字符串不包含字符“trunk%d”。如果您检查rangeOfString:
的返回值,您会发现它返回了失败指示 - 请阅读文档以了解如何测试该值。
对于尝试查看NSString
方法rangeOfCharactersFromSet:
时匹配任意十进制数的简单任务。
您还可以使用课程NSScanner
和NSRegularExpression
解决此问题。
HTH