您的位置:首页 > 移动开发 > IOS开发

ios 开发中获取字符串中重复的字符的range

2017-06-22 21:18 239 查看
iOS 开发中经常会遇到处理字符串的问题,对于一个字符串经常会遇见里面包含重复的字符需要对重复的字符进行处理,下面的代码就是对重复字符进行处理的操作,具体代码如下所示:

/**
 *  返回重复字符的location
 *
 *  @param text     初始化的字符串
 *  @param findText 查找的字符
 *
 *  @return 返回重复字符的location
 */
- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
    NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
    if (findText == nil && [findText
isEqualToString:@""]) {
        return nil;
    }
    NSRange rang = [text rangeOfString:findText];
    if (rang.location !=
NSNotFound && rang.length !=
0) {
        [arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
        NSRange rang1 = {0,0};
        NSInteger location =
0;
        NSInteger length =
0;
        for (int i =
0;; i++)
        {
            if (0 == i) {
                location = rang.location + rang.length;
                length = text.length - rang.location - rang.length;
                rang1 = NSMakeRange(location, length);
            }else
            {
                location = rang1.location + rang1.length;
                length = text.length - rang1.location - rang1.length;
                rang1 = NSMakeRange(location, length);
            }
            rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
            if (rang1.location ==
NSNotFound && rang1.length ==
0) {
                break;
            }else
                [arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
        }
        return arrayRanges;
    }
    return nil;
}

在开发中,如果遇到遍历不同字符串在字符串中的位置,可能有重复可能没有重复,为了避免重复遍历对字符串设置。。。需要设置一个全局字典,将要查的字符串加进数组中,第二次同样的字符串进入getRangeStr的时候,如果数组中包含这个字符串,直接return。

如下:

/**
 *  返回重复字符的location
 *
 *  @param text     初始化的字符串
 *  @param findText 查找的字符
 *
 *  @return 返回重复字符的location
 */

- (NSMutableArray *)getRangeStr:(NSString *)text findText:(NSString *)findText {
    if ([self.findTextArr
containsObject:findText]) {// 避免重复查找同样的字符串
        return nil;
    }
    [self.findTextArr
addObjectSafe:findText];
    NSMutableArray *arrayRanges = [NSMutableArray
arrayWithCapacity:20];
    if (findText == nil && [findText
isEqualToString:@""]) {
        return nil;
    }
    NSRange rang = [text rangeOfString:findText];
    if (rang.location !=
NSNotFound && rang.length !=
0) {
        [arrayRanges addObject:[NSNumber
numberWithInteger:rang.location]];
        NSRange rang1 = {0,0};
        NSInteger location =
0;
        NSInteger length =
0;
        for (int i =
0;; i++)
        {
            if (0 == i) {
                location = rang.location + rang.length;
                length = text.length - rang.location - rang.length;
                rang1 = NSMakeRange(location, length);
            }else
            {
                location = rang1.location + rang1.length;
                length = text.length - rang1.location - rang1.length;
                rang1 = NSMakeRange(location, length);
     
a621
      }
            rang1 = [text rangeOfString:findText
options:NSCaseInsensitiveSearch
range:rang1];
            if (rang1.location ==
NSNotFound && rang1.length ==
0) {
                break;
            }else
                [arrayRanges addObject:[NSNumber
numberWithInteger:rang1.location]];
        }
        return arrayRanges;
    }
    return nil;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS range