我想找到第8次出现的索引“”,以便我可以在那里拆分我的字符串。但是,我能找到的就是这行代码,它给出了一系列“”的所有出现。我可以打电话给我这个信息吗?
int numberOfOccurences = [[myListString componentsSeparatedByString:@" "] count];
编辑1:到目前为止,这是我提出的解决方案:
if(numberOfOccurences > 8)
{
//find index of place where you want to split by picking an
//arbitrary number and finding the first white space
int index = (int)[[myListString substringFromIndex:45] rangeOfString:@" "].location;
NSLog(@"Index: %i", index);
//make substring
NSString *substringList1 = [myListString substringToIndex:(45+index)];
NSString *substringList2 = [myListString substringFromIndex:(45+index)];
}
答案 0 :(得分:1)
没有方法可以找到第8个空间,但是有你需要的构建块。
NSString
方法rangeOfString:options:range:
将在第三个参数指定的范围内找到第一个参数,它返回匹配的范围。您只需从第三个参数开始,即整个字符串,然后迭代缩小范围以使用之前的结果进行搜索。
如果您实际上在寻找空白而不仅仅是空间,您可能会考虑类似的rangeOfCharactersFromSet
方法。
如果你真的不想要第八个空格,但是试图打破给定长度的字符串,你可以查看componentsSeparatedByString
/ componentsSeparatedByCharactersInSet
,然后将得到的“单词”重新组合成适当长度的字符串。您可能还想查看NSScanner
。
HTH
答案 1 :(得分:0)
明确假设您正在寻找第八个空格(并且可能需要根据字符集稍微调整正则表达式),您可以使用正则表达式:
NSRegularExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"^([^ ]* ){8}+"
options:0
error:NULL];
NSRange result = [exp rangeOfFirstMatchInString:input options:0 range:inputRange];
如果result.location != NSNotFound
,那么result.length
会为您提供要拆分的索引。