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

Get invisible decimal value in NSString objc

我有一个字符串,其名称为随机名称,前缀为不可见的十进制值。小数点 = 名称长度。我需要检索名称。显然它们的长度不同。我想要数组中的名称,所以我的想法是使用 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

您误解了 %d 的意思。

在用于创建 字符串的格式中,它表示 "insert the value of an integer argument formatted as a string"。

将一个字符串与另一个匹配时,它意味着"match the characters %d",即反正也没什么特别的。

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

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

您也可以使用 类 NSScannerNSRegularExpression 来解决这个问题。

HTH