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 { ...
随机推荐
- 文本(TextView)
今天给大家介绍一下简单的文本. 首先我们看下TextView的继承关系和一些基本的属性: xml文件如下: <?xml version="1.0" encoding=&quo ...
- hustoj搭建--常见问题
环境: Centos6.5 apache2+PHP5+MySQL 设置apache服务器网站根路径(设置之后可通过IP访问OJ) 1. 进入目录/etc/httpd/conf下的httpd.con ...
- spring单元测试报错:Failed to load ApplicationContext 的解决方法
使用idea 配置单元测试之后,配置完spring的注解@junit 和@runer 之后 一直报错. 最后发现是默认使用jdk1.8引起的,使用jdk1.7即可.
- jQuery的安装
一.jQuery的安装 下载 jQuery 有两个版本的 jQuery 可供下载: Production version - 用于实际的网站中,已被精简和压缩. Development version ...
- IDEA创建maven项目时,maven太慢-archetypeCatalog=internal
创建项目时候加上archetypeCatalog=internal 参数, archetypeCatalog表示插件使用的archetype元数 据,不加这个参数时默认为remote,local,即中 ...
- Django基础之form操作
Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型) Form相关的对象包括 Wi ...
- 排查在 Azure 中新建 Windows 虚拟机时遇到的经典部署问题
尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...
- Visual Studio 2017RC 版本相关资料
Visual Studio 2017 RC版本说明 1.社区版 Visual Studio Community 2017 RC Visual Studio Community 2017 RC 是针对个 ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Transaction Replication(事务复制)
复制类型: 1)事务型复制:通过复制事务日志到订阅点重做的方式,属于增量型复制: 2)合并型复制:通过触发器和元数据表追踪表数据改变,同样属于增量型复制: 3)快照型复制:通过创建数据库快照,并把快照 ...
- 模块复习 staticmethod和classmethod的区别
Python中classmethod与staticmethod区别 classmethod:类方法staticmethod:静态方法 在python中,静态方法和类方法都是可以通过类对象和类对象实例访 ...