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 > ) { if((range.location == ) && (self.length == NSMaxRange(range))) { return nil;
} else if((range.location == ) && (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;
}
OC字符串处理的更多相关文章
- OC字符串常用函数
创建一个字符串对象: NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWithString:@& ...
- OC字符串的常用方法
网上写的关于字符串常用方法的博客很多,这里我简单做了下总结!不喜勿喷哦! 一.创建字符串 #import <Foundation/Foundation.h> //NSString //创建 ...
- c语言字符串转OC字符串
// 如果把c语言字符串转OC字符串,@(C字符串) char *c = "abc"; NSLog(@"%@", @(c));
- OC字符串与C语言字符串之间的相互转换
1.C转OC字符串 const char *cString = "This is a C string"; // 动态方法 NSString *ocString1 = [[NSSt ...
- OC字符串NSString
========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...
- oc 字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- OC字符串的一些常用的函数。
)//获取字符串长度 NSUInteger len= str.length; () //通过指定索引返回对应的字符 unichar ch =[str characterAtIndex:]; ()//通 ...
- C 和 OC 字符串转换 NSString 和 char * 转换 const char* 与 char *
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { char *s = "He ...
- QF——OC字符串
OC中的字符串: C中没有字符串类型,用字符数组和指针代替. OC中引入了字符串类型,它包括NSString 和 NSMutableString两种 NSString是不可变的,已经初始化便不能更改: ...
- OC字符串的使用(一)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
随机推荐
- html5-audio 播放列表和自动播放
一个简单audio的列表和播放小例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- MongoDB 投影
mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.例如一个文档有5个字段,只需要显示其中3个 find() 方法 在MongoDB中,当执行find()方法,那么它会显示一个文 ...
- 【es6】Generator 函数
1. 基本概念 状态机,封装了多个内部状态 2. 应用 返回一个遍历器对象. 3. 代码形式 function* helloWorldGenertor() { yield 'hello'; yield ...
- MySQL数据库(12)----ALL、ANY、SOME子查询
运算符 ALL 和 ANY 常与某个关系比较运算符结合在一起使用,以便测试列子查询的结果.它们会测试比较值与子查询返回的全部或部分值是否匹配.例如,当比较值小于或等于子查询返回的每个值时,<= ...
- 关于modelmap.addAttribute("",)转到jsp页面获取不到值的问题
问题一,可能是你设置的web.xml的头有问题 掉坑里好一会,发现我默认生成的web.xml中头部的配置是 <!DOCTYPE web-app PUBLIC "-//Sun Micro ...
- Monkey测试运用实例
测试命令是多样性的,根据个人的测试思路,设计执行你想要的测试命令 1.monkey -p com.junte -v 1000 团贷网模拟用户随机操作,无延时点击1000次 -p测试包 ...
- 结合java的反射和泛型性质简化JDBC和相应的同步等服务器数据库操作代码
github地址:https://github.com/hzphzp/HeartTrace_Server 我们的服务器端数据库并没有用sqllite, 而是直接用mysql,并且用JDBC直接进行操作 ...
- java笔记--String类对象解析与运用
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877236.html "谢谢-- 1.String中的equals和==的 ...
- The Shapes of CSS(css的形状)
All of the below use only a single HTML element. Any kind of CSS goes, as long as it's supported in ...
- Matlab基础 数组
一.引用 数组元素引用,下标从1开始 如y(3)表示第3个元素 二.扩充 扩充2*3矩阵为3*3矩阵,并且给a(3,3)赋值为9 三.提取 数组按列存储 全下标变化为单下标: sub2ind((m,n ...