• OC字符串处理


    接到一个需求, 现有多个品牌的商品,使用字符串保存已选中的品牌,使用','隔开,可以反选。

    分析问题可知:

    1. 字符串由多个品牌名字组成,由 ',' 隔开。

    2.如果选中的品牌不在字符串内,则拼接到字符串。

    3.如果选中的品牌在字符串内,移除这个品牌。

    子字符串在字符串内的位置有 3 种情况:

    在1.头部 2.在内部 3.在尾部,如果子字符 在内部或尾部,

    我们选择移除 ',子字符串',即左边的连接符和子字符串一起移除。

    代码如下:使用 NSString 的分类来写的。

    /**
     字符串处理,添加 字符串,如果已包含此字符串,将其移除
    
     @param com 要插入或者移除的字符串
     @param se 连接符 seperator
     @return 处理结果
     */
    - (NSString *)addComponet:(NSString *)com with:(NSString *)se {
        
        if (IsStrEmpty(com) || IsStrEmpty(se)) {
            return self;
        }
        
        // 时间 空间 复杂度,另一种思路是用 逗号分割成数组,对数组进行操作
        // 1. NSMaxRange(range) > 0 ? contain : do not contain
        // 1.1 range.location == 0 && NSMaxRange(range) == self.filterParam.brandCode.length  e.g. haier
        // 1.2 range.location == 0 && self.filterParam.brandCode.length > NSMaxRange(range)   e.g. haier,haixin,...
        // 1.3 range.location > 0 && self.filterParam.brandCode.length == NSMaxRange(range)   e.g. ...haixin,haier
        // 1.4 range.location > 0 && self.filterParam.brandCode.length > NSMaxRange(range)    e.g. ...,haier,....
        NSRange range = [self rangeOfString:com];
        if (range.length > 0) {
            
            if((range.location == 0) && (self.length == NSMaxRange(range))) {
                
                return nil;
            } else if((range.location == 0) && (self.length > NSMaxRange(range)))  {
                
                range = NSMakeRange(range.location, range.length + se.length);
                return [self stringByReplacingCharactersInRange:range withString:@""];
            } else  {
                
                range = NSMakeRange(range.location - se.length, range.length + se.length);
                return [self stringByReplacingCharactersInRange:range withString:@""];
            }
        } else {
            
            NSString *suffix = [NSString stringWithFormat:@"%@%@", se, com];
            return [self stringByAppendingString:suffix];
        }
        
        return self;
    }
  • 相关阅读:
    poj2926
    poj2917
    新手入门:PHP网站开发中常见问题汇总
    js字符串转换成数字,数字转换成字符串
    !! jquery主要资料
    IT公司面试手册.htmhttp://www.mianwww.com/html/2009/02/2931.html
    sql语句 返回最后的insert操作所产生的自动增长的id
    eclipse 无法正常保存js
    javascript深入理解js闭包
    如何用javascript操作本地文件(读写txt文件)
  • 原文地址:https://www.cnblogs.com/miaocunfa/p/9661651.html
Copyright © 2020-2023  润新知