- 浏览: 13742672 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。
1.创建NSString字符串
NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组。@+" 字符串 " 这个符号为objective-c NSString 字符串常量的标准用法,char* 创建的时候 无需添加@
- (void)viewDidLoad { [super viewDidLoad]; //经典的字符串赋值 NSString *str0 = @"my name is justcoding !"; //字符串格式化合并分别包括 //NSString*类型 int类型 char*类型 NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年龄:%d 我的邮箱:%s",@"justcoding", 25,"justcoding@gmail.com"]; //字符串赋值 参数中只可以写一个字符串 和第一种很像 NSString *str2 = [NSString stringWithString:@"我是字符串"]; //字符串转换为utf-8格式 参数为char*类型 NSString *str3 = [NSString stringWithUTF8String:"字符串转换utf-8格式"]; //字符串合并 int i = 100; char*c = "xuanyusong"; NSString *temp = @"我是临时字符串"; //在字符串temp的基础继续添加 int i 与 char* c 组成一个新的字符串 NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c]; //在字符串temp的基础继续添加temp 并组成一个新的字符串 NSString *str5 = [temp stringByAppendingString:temp]; //字符串输出 NSLog(@"str0 = %@", str0); NSLog(@"str1 = %@", str1); NSLog(@"str2 = %@", str2); NSLog(@"str3 = %@", str3); NSLog(@"str4 = %@", str4); NSLog(@"str5 = %@", str5); }
2.字符串的遍历
每一个字符串其实是由若干个char字符组成,字符串的遍历实际上就是将字符串中的每一个字符提取出来。
- (void)viewDidLoad { [super viewDidLoad]; //经典的字符串赋值 NSString *str = @"YUSONGMOMO"; //字符串的长度 int count = [str length]; NSLog(@"字符串的长度是%d",count); //遍历字符串中的每一个字符 for(int i =0; i < count; i++) { char c = [str characterAtIndex:i]; NSLog(@"字符串第 %d 位为 %c",i,c); } }
3.字符串的比较
isEqualToString 比较字符串是否完全相等,大小写不一样也无法完全匹配。
hasPrefixe 匹配字符串头
haSuffix 匹配字符串的尾巴
- (void)viewDidLoad { [super viewDidLoad]; NSString *str0 = @"justcoding"; NSString *str1 = @"justcoding"; //字符串完全相等比较 if([str0 isEqualToString:str1]) { NSLog(@"字符串完全相等"); } //字符串以开头比较 if([str0 hasPrefix:@"just"]) { NSLog(@"字符串str0以just开头"); } //字符串以结尾比较 if([str1 hasSuffix:@"coding"]) { NSLog(@"str1字符串以coding结尾"); } }
//isEqualToString方法 NSString *astring01 = @"This is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 isEqualToString:astring02]; NSLog(@"result:%d",result);
//compare方法(comparer返回的三种值) NSString *astring01 = @"This is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 compare:astring02] = = NSOrderedSame; NSLog(@"result:%d",result); //NSOrderedSame 判断两者内容是否相同
NSString *astring01 = @"This is a String!"; NSString *astring02 = @"this is a String!"; BOOL result = [astring01 compare:astring02] = = NSOrderedAscending; NSLog(@"result:%d",result); //NSOrderedAscending 判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)
NSString *astring01 = @"this is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 compare:astring02] = = NSOrderedDescending; NSLog(@"result:%d",result); //NSOrderedDescending 判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)
//不考虑大 小写比较字符串1 NSString *astring01 = @"this is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame; NSLog(@"result:%d",result); //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为 真)
//不考虑大小写比较字符串2 NSString *astring01 = @"this is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame; NSLog(@"result:%d",result); //NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。
判断的方法可以利用 NSString 类别中 caseInsensitiveCompare: 所回传 -1、0 或是 1 的数值,判定两个字串之间得排序关系,其程式玛如下。
NSString *string = @"0"; NSComparisonResult result = [string caseInsensitiveCompare:@"A"]; switch (result) { case NSOrderedAscending: NSLog(@"升幂"); break; case NSOrderedSame: NSLog(@"忽略大小写相同的字串"); break; case NSOrderedDescending: NSLog(@"降幂"); break; default: NSLog(@"无法判定"); break; }
4. 文件字符串操作(读写)
//从文件读取字符串:initWithContentsOfFile方法 NSString *path = @"astring.text"; NSString *astring = [[NSString alloc] initWithContentsOfFile:path]; NSLog(@"astring:%@",astring); [astring release]; //astring=nil;
//写字符串到文件:writeToFile方法 NSString *astring = [[NSString alloc] initWithString:@"This is a String!"]; NSLog(@"astring:%@",astring); NSString *path = @"astring.text"; [astring writeToFile: path atomically: YES]; [astring release]; //astring=nil;
* ios5 不支持release iOS应用开发:什么是ARC?
//扩展路径 NSString *Path = @"~/NSData.txt"; NSString *absolutePath = [Path stringByExpandingTildeInPath]; NSLog(@"absolutePath:%@",absolutePath); NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);
//文件扩展名 NSString *Path = @"~/NSData.txt"; NSLog(@"Extension:%@",[Path pathExtension]);
5. 字符串的截取和大小写
//改变字符串的大小写 NSString *string1 = @"A String"; NSString *string2 = @"String"; NSLog(@"string1:%@",[string1 uppercaseString]);//大写 NSLog(@"string2:%@",[string2 lowercaseString]);//小写 NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小
- (void)viewDidLoad { [super viewDidLoad]; NSString *str0 = @"中文my name is xuanyusong"; //截取字符串起始点到index为4之间的内容 NSString * to = [str0 substringToIndex:4]; NSLog(@"to = %@",to); //截取字符index为2 到结尾之间的内容 NSString * from = [str0 substringFromIndex:2]; NSLog(@"from = %@",from); //设置截取字符串的范围 //从第二位开始,长度为十 NSRange rang = NSMakeRange(2, 10); NSString * strRang = [str0 substringWithRange:rang]; NSLog(@"rang = %@",strRang); //设置字符串首字母大写 NSLog(@"str0首字母大写:%@",[str0 capitalizedString]); //设置字符串全部内容为大写 NSLog(@"str0大写:%@",[str0 uppercaseString]); //设置字符全部内容为小写 NSLog(@"str0小写:%@",[str0 lowercaseString]); }
6.搜索字符串与替换字符串
- (void)viewDidLoad { [super viewDidLoad]; NSString *str0 = @"中文my name is xuanyusong"; NSString *temp = @"is"; NSRange rang = [str0 rangeOfString:temp]; NSLog(@"搜索的字符串在str0中起始点的index 为 %d", rang.location); NSLog(@"搜索的字符串在str0中结束点的index 为 %d", rang.location + rang.length); //将搜索中的字符串替换成为一个新的字符串 NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"]; NSLog(@"替换后字符串为%@", str); //将字符串中" " 全部替换成 * str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"]; NSLog(@"替换后字符串为%@", str); }
拓展:使用下面这个方法整体替换字符串还可以设置替换的区域。
stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)
7.字符串尾部添加
使用alloc在内存中创建字符串对象后边可以动态的操作这个字符串,修改与添加等。
appendstring 方法:向字符串尾部添加一个字符串。
appendFormat方法:向字符串尾部添加多个类型的字符串,可以添加任意数量与类型的字符串。
- (void)viewDidLoad { [super viewDidLoad]; NSMutableString * str = [[NSMutableString alloc] init]; //添加普通的字符串 [str appendString:@"aaa"]; //添加字符串 整型 字符型 [str appendFormat:@"我的名字:%@ 我的年龄:%d 我的邮箱:%s",@"justcoding", 25,"justcoding@gmail.com"]; NSLog(@"str = %@",str); }
8. 字符串中删除元素
stringWithString 方法:用于创建字符串初始化赋值
rangeOfString方法:传入字符串返回一个在该字符串中的范围 也可以写 NSMakeRange(0, 3) 意思是范围在字符串0位到第3位
deleteCharactersInRange:删除字符串 参数为Range 就是删除的范围。
- (void)viewDidLoad { [super viewDidLoad]; //创建字符串 NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"]; //删除字符串中含"justcoding"的字符 [str deleteCharactersInRange: [str rangeOfString: @"justcoding"]]; NSLog(@"str = %@",str); }
9. 字符串插入
stringWithString 方法:用于创建字符串初始化赋值
insertString方法:第一个参数 插入的字符串对象, 第二个参数 插入的位置。
- (void)viewDidLoad { [super viewDidLoad]; //创建字符串 NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"]; //在str第10位插入字符串 [str insertString:@"best man" atIndex:10]; NSLog(@"str = %@",str); }
10. 字符串拷贝
- (void)viewDidLoad { [super viewDidLoad]; //创建字符串 NSMutableString *str1 = [NSMutableString stringWithString: @"字符串1"]; NSMutableString *str2; //字符串赋值 str2 = str1; [str2 appendString: @" 和字符串2"]; NSLog (@"str1 = %@", str1); NSLog (@"str2 = %@", str2); }
为什么给str2添加数据后 str1的数据也改变了?这就是指针的魅力所在,因为我们操作的是指针,str2 = str1 意思是两个指针同时指向一块内存,那么str2指向的内存内容改变以后str1当然跟着改变了。
11. 字符串与指定类型转换
如果转换的参数非法的话不会抛出异常,好比用中文去转整型。不会报错 但是转换结果为 0 ,默认值。
- (void)viewDidLoad { [super viewDidLoad]; //字符串转整型 NSString *str0 = @"1121"; //NSString *str0 = @"中国"; //把字符串强转成整型 int i = [str0 intValue]; NSLog (@"转换后:%i", i); //字符串转interger NSString *str1 = @"1985"; // NSString *str1 = @"中国"; //把字符串强转成interger NSInteger ii = [str1 integerValue]; NSLog (@"转换后:%i", ii); //字符串转double NSString *str2 = @"3.145926"; //NSString *str2 = @"中国"; //把字符串强转成double double d = [str2 doubleValue]; NSLog (@"转换后:%f", d); //字符串转float NSString *str3 = @"3.145926"; //NSString *str3 = @"中国"; //把字符串强转成float double f = [str3 floatValue]; NSLog (@"转换后:%f", f); }
来源:
http://blog.csdn.net/xys289187120/article/details/6777283
http://www.cocoachina.com/iphonedev/sdk/2010/0607/1634.html
+(id)stringWithContentsOfFile:path encoding:enc err | 创建一个新字符串并将其设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误 |
+(id)stringWithContentsOfURL:url encoding:enc err | 创建一个新字符串并将其设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误 |
+(id)string | 创建一个新的空字符串 |
+(id)stringWithString:nsstring | 创建一个新字符串,将其内容设置为 nsstring 内容 |
-(id)initWithString:nsstring | 将字符串内容设置为 nsstring 内容 |
-(id)initWithContentsOfFile:path encoding:enc error:err | 将字符串设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误 |
-(id)initWithContentsOfURL:url encoding:enc error:err | 将字符串设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误 |
-(UNSigned int)length | 返回字符串中字符数目 |
-(unichar)characterAtindex:i | 返回索引i 所在UniCode 字符 |
-(NSString*)substringFromIndex:i | 返回从索引 i 开始到结尾的子字符串 |
-(NSString*)substringWithRange:range | 根据指定范围返回子字符串 |
-(NSString*)substringToIndex:i | 返回从字符串开始到 索引 i 的子字符串 |
-(NSComparator*)caseInsensitiveCompare:nsstring | 比较两个字符串大小,忽略大小写 |
-(NSComparator*)compare:nsstring | 比较两个字符串大小 |
-(BOOL)hasPrefix:nsstring | 测试字符串是否以 nsstring 开始 |
-(BOOL)hasSuffix:nsstring | 测试字符串是否以 nsstring 结尾 |
-(BOOL)isEqualToString:nsstring | 测试两个字符串是否相等 |
-(NSString*)capitalizedString | 返回字符串,串中的每个单词的首字母大写,其余字母小写 |
-(NSString*)lowercaseString | 返回转换为小写的字符串 |
-(NSString*)uppercaseString | 返回转换为大写的字符串 |
-(const char*)UTF8String | 返回UTF8编码格式的字符串 |
-(double)doubleValue | 返回转换为double 类型的字符串 |
-(float)floatValue | 返回转换为 float 类型的字符串 |
-(NSInteger)integerValue | 返回转换为 NSInteger 类型的新字符串 |
-(int)intvalue | 返回转换为 int 的字符串 |
+(id)stringWithCapacity:size | 创建一个字符串,容量为size大小 |
-(id)initWithCapacity:size | 初始化一个字符串,容量为size |
-(void)setString:nsstring | 将字符串设置为 nsstring |
-(void)appendString:nsstring | 在字符串末尾追加字符串 nsstring |
-(void)deleteCharatersInRange:range | 删除指定range 中的字符 |
-(void)insertString:nsstring atIndex:i | 以索引 i 为起始位置插入 nsstring |
-(void)replaceCharatersInRange;range withString:nsstring | 使用 nsstring 替换 range 指定的字符 |
-(void)replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range | 根据选项 opts ,使用指定 range 中的nsstring2 替换所有的 nsstring |
发表评论
-
手机firebug查看网页代码 How to View Website Source Codes on iPad / iPhone
2016-04-26 02:41 1172You’re using your iPad to br ... -
Android模拟器genymotion的安装和使用
2016-03-18 01:16 2531Genymotion概述 Genymotion是一套完整的 ... -
编码之道:取个好名字很重要
2015-10-14 05:19 1176代码就是程序员的孩子,给“孩子”取个好听的名字很重 ... -
Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)
2015-06-05 13:34 7394随着 Android 系统的应用和游戏越来越丰富,甚至有 ... -
收集几个移动平台浏览器的User-Agent
2014-07-23 02:33 3033List of all Mobile Browsers ... -
常用浏览器修改User-Agent的方法
2014-06-28 02:58 10987之前有介绍收集的几个移动平台浏览器的User-Agent,以 ... -
更简洁的方式修改Chrome的User Agent,轻松体验移动版网络
2014-06-28 02:53 6948国庆节在家宅着,使用3g上网卡上网,和在公司上网不一样的是 ... -
3个检测浏览器User-Agent信息的网站
2014-06-28 02:52 2563刚刚在收集各个移动平台浏览器的User-Agent(参见这 ... -
根据移动设备屏幕像素密度,给予不同分辨率的图片
2014-06-26 00:52 2975在出现iphone4之前的相当长的时间内,网站开发人员 ... -
视网膜New iPad与普通分辨率iPad页面的兼容处理
2014-06-26 00:44 1346一、这是篇经验分享 ... -
iOS8开发-Swift编程
2014-06-25 00:45 1910课时列表 章节1:第一个Swift应用 ... -
Swift中文教程(二十三) 高级运算符
2014-06-25 00:43 830除了基本操作符中所讲的运算符,Swift还有许多复杂的高级 ... -
Swift中文教程(二十二) 泛型
2014-06-25 00:35 1074泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵 ... -
Swift中文教程(二十一) 协议
2014-06-24 05:25 1463Protocol(协议)用于统一方法和属性的名称,而不实现任 ... -
Swift中文教程(二十) 扩展
2014-06-24 00:47 739扩展就是向一个已有的类、结构体或枚举类型添加新功能(fun ... -
Swift中文教程(十九) 类型嵌套
2014-06-24 00:44 933枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量 ... -
Swift中文教程(十八) 类型检查
2014-06-24 00:41 779类型检查是一种检查类实例的方式,并且或者也是让实例作为它的 ... -
Swift中文教程(十七) 可选链
2014-06-17 05:11 908可选链(Optional Chaining)是一种可以请求 ... -
Swift中文教程(十六) 自动引用计数
2014-06-17 05:05 1294Swift使用自动引用计数(ARC)来管理应用程序的内存使 ... -
Swift中文教程(十五) 析构
2014-06-17 04:57 1040在一个类的实例被释放之前,析构函数会被调用。用关键字dei ...
相关推荐
` 创建一个空的可变字符串实例。 2. **从NSString创建NSMutableString**:`mstr = [NSMutableString stringWithString:str1];` 把`NSString`转换为`NSMutableString`。 3. **插入字符串**:`[mstr insertString:@...
1. **性能优化**:对于需要频繁修改的字符串,考虑使用 `NSMutableString` 而不是 `NSString`。 2. **国际化**:确保使用 `NSLocalizedString` 函数来处理需要本地化的字符串。 3. **安全性**:在处理用户输入时,应...
通过对`NSString`的扩展,不仅增强了字符串处理的功能,还提高了代码的可读性和重用性。例如,通过宏定义可以快速地将不同类型的数值转换为字符串,而实例方法则提供了更为丰富的字符串处理能力,如判断字符串的组成...
在`NSStringAndNSMutableString`这个示例中,我们可以预期看到一系列的代码实例,演示了如何在Objective-C项目中创建、操作和管理这两种字符串类型。这包括字符串的初始化、比较、格式化、拼接、分割、查找和替换等...
追加字符串通常使用`appendString:`或`stringByAppendingString:`方法(对于NSMutableString对象),对于NSString对象,需要先创建NSMutableString实例: ```objc NSMutableString *str1 = [NSMutableString ...
此方法创建了一个不可修改的字符串实例,即常量字符串。 **1.2 创建空字符串并赋值** ```objective-c NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; NSLog(@"astring: %@", a...
在描述中提到的任务是过滤掉这些样式字符,这通常涉及到字符串处理。在OC中,我们可以利用Foundation框架中的NSString和NSMutableString类来完成这个任务。 首先,我们需要一个方法来接收包含特殊字符的电话号码...
`NSMutableString`是`NSString`的子类,允许对字符串进行修改: 1. 插入字符或字符串:`insertString:atIndex:`可以在指定位置插入内容。 2. 替换字符或字符串:`replaceCharactersInRange:withString:`替换指定...
MD5(Message-Digest ...总之,`WsqMD5Util`类提供了一种方便的方式来计算Objective-C中的字符串的MD5值,这是在开发中处理数据安全和验证时常见的需求。通过这个工具类,开发者可以快速集成MD5功能到自己的项目中。
需要注意的是,`NSString`对象一旦创建后就不能修改,如果需要一个可变的字符串,则应该使用`NSMutableString`类。 - 创建方法示例: - 创建一个字符串常量:`NSString *str = @"Hello World";` - 创建一个空的...
这个实例方法将Objective-C对象转换为JSON格式的字符串。 接下来,我们将详细探讨如何实现数组和字典到JSON的转换: **一、数组转换为JSON** 假设我们有一个NSArray对象`myArray`,其中包含其他可序列化的对象...
对于复制操作,`copy`会创建一个新的不可变字符串实例;`retain`则保留当前对象的引用计数;`mutableCopy`则创建一个可变字符串实例。 **3.3 属性赋值** - **assign、retain与copy**: `assign`用于基本类型和C...
- `NSString` 和 `NSMutableString`:用于处理不可变和可变字符串。 - `NSNumber`, `NSValue`, `NSData`, `NSDate`:用于封装数值、基本数据类型、二进制数据和日期时间。 - `NSArray`, `NSDictionary`, `NSSet`:...
例如,处理字符串(NSString和NSMutableString)、数组(NSArray和NSMutableArray)、字典(NSDictionary和NSMutableDictionary)等。使用框架中提供的方法,可以执行追加、删除、修改、插入、查询、拆分、遍历等...
- 字符串(NSString和NSMutableString)的创建和操作 - 数组(NSArray和NSMutableArray)和字典(NSDictionary和NSMutableDictionary)的使用 - 基本数据类型和对象类型之间的转换 4. 第四章 - 控制流 - 条件...
我们还将学习Objective-C中的常见数据类型,例如整型(int)、浮点型(float)、布尔型(BOOL)、字符型(char)以及字符串类型(NSString和NSMutableString)。每种类型都有其用途,例如整型用于存储没有小数部分的...
第三章字符串,介绍了Objective-C中处理文本数据的常用类NSString和NSMutableString。NSString用于表示不可变的字符串,而NSMutableString用于表示可变的字符串。 第四章内存管理,讲解了Objective-C中对象的内存...
- 字符串处理:熟悉NSString、NSMutableString的使用,以及正则表达式操作。 - 数组与集合:深入学习NSArray、NSMutableArray、NSSet、NSMutableDictionary等容器类的使用。 - 字典:掌握NSDictionary、...
- `NSString *`: 字符串类型(Objective-C特有)。 示例代码: ```objective-c int i = 42; float f = 3.14; BOOL flag = YES; NSString *str = @"Hello, Objective-C"; ``` ##### 1.3 定义类和对象 在Objective-...