NSMutable String:如何获取字符串中多个空格的索引?

时间:2015-07-10 17:43:32

标签: ios objective-c string

我想找到第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)];
 }

2 个答案:

答案 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会为您提供要拆分的索引。