【发布时间】:2017-12-19 11:38:15
【问题描述】:
我有字符串
NSString *str = @"M 2 2 C 5 6 7 8 9 1 2 3M 1 2 C 5 6 7 8 9 1 2 3"
我想要一个子字符串数组,例如["2 2","5 6 7 8 9 1 2 3","1 2","5 6 7 8 9 1 2 3"]
我想用字典中的类型来映射它
["M":"2 2", "C":"5 6 7 8 9 1 2 3"]
我发现可以使用 range 属性获取子字符串
NSString *str = @"M 2 2 C 5 6 7 8 9 1 2 3M 1 2 C 5 6 7 8 9 1 2 3"
NSRange r1 = [str rangeOfString:@"M"];
NSRange r2 = [str rangeOfString:@"C"];
NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);
NSString *sub = [s substringWithRange:rSub];
但是字母 M 和 C 的顺序是任意的。如何解决整个字符串长度的问题并将其放入数组中?
【问题讨论】:
-
你的字符串是动态的?我的意思是可以是任何字母还是必须是 M 和 C?
-
在“将其映射为一本字典”?因为后面的字符串包含两个'M',并且字典中只能有一个'M'作为键。
-
等等……你说
I want to an array of substrings like ["2 2","5 6 7 8 9 1 2 3","1 2","5 6 7 8 9 1 2 3"和I want to map it with the type in a dictionary like "["M":"2 2", "C":"5 6 7 8 9 1 2 3"]。数组和字典如何关联?正如 Arun 指出的那样,您的示例数据中有两次键“M”,但字典键是唯一的。 -
您需要更好地定义您的问题。看起来您将字符“M”和“C”视为分割字符串的分隔符,以及输出字典中的键。你需要更清楚地解释你的目标。此外,在您的示例数据中,除了“3M”的一个实例之外,您的所有单个字符都由空格分隔。那是有效的数据,还是应该在“3”和“M”之间有一个空格?
标签: ios objective-c arrays string nsstring