iOS-OC-NSString和NSMutableString用法大全
来源:互联网 发布:英雄岛全套源码下载 编辑:程序博客网 时间:2024/04/29 18:49
// 创建NSString的常用方法+ (void)NSStringCreateMethod{ // 字符串常量 类似于 char *p = "Hello world"; // NSString的对象,里面的内容(字符串)一旦创建,就不能再被改变。 // string,是一个指向对象的指针,在OC/IOS里,操作对象,就是指向对象的指针。(string,就是对象),对象自己拥有很多的成员方法调用。每一个NSString的对象,都有这些方法。 // p是一个指向C字符串的指针(C数组),C库提供了很多的字符串相关的函数,这些函数并不属于任何一个C字符串。 NSString *string = @"Hello world"; // 用%@,来打印对象 NSLog(@"string = %@",string); // 用一个string对象的内容(字符串),来初始化string1。 NSString *string1 = [[NSString alloc] initWithString:string]; NSLog(@"string1 = %@",string1); // 用一个string对象的内容,来创建string2; initWithString:对应的加方法。 // 注意:每一个initWithXxxx常对应一个aaaaWithXxxx NSString *string2 = [NSString stringWithString:string]; NSLog(@"string2 = %@",string2); // 用一个C字符串采用UTF8编码格式,来初始化string3。 NSString *string3 = [[NSString alloc] initWithUTF8String:"Hello world"]; NSLog(@"string3 = %@",string3); // 对应的加方法,用一个C字符串,来创建string4 NSString *string4 = [NSString stringWithUTF8String:"Hello world"]; NSLog(@"string4 = %@",string4); // 用一个C字符串,使用NSUTF8StringEncoding(就是UTF8编码),来初始化string5。相当于initWithUTF8String: NSString *string5 = [[NSString alloc] initWithCString:"Hello world" encoding:NSUTF8StringEncoding]; NSLog(@"string5 = %@",string5); // 对应的加方法 NSString *string6 = [NSString stringWithCString:"Hello world" encoding:NSUTF8StringEncoding]; NSLog(@"string6 = %@",string6); // NSLog(NSString *format, ...); // printf(const char *restrict, ...); // sprintf(char *restrict, const char *restrict, ...); // 用一个格式化的内容,来初始化string7,类似sprintf NSString *string7 = [[NSString alloc] initWithFormat:@"Hello world %@ %d %s %.2f OK",string, 18, "good", 3.14]; NSLog(@"Hello world %@ %d %s %.2f OK",string, 18, "good", 3.14); NSLog(@"string7 = %@",string7); // 对应的加方法 NSString *string8 = [NSString stringWithFormat:@"%d %c",1024,'X']; NSLog(@"string8 = %@",string8);}/* + (id)stringWithString:(NSString *)string { return [[NSString alloc] initWithString:string]; } */+ (void)NSStringSimpleMethod{ NSString *string = @"Hello world"; // 获取字符串对象的长度(这个对象里保存的字符串的长度) NSLog(@"%lu",[string length]); // OC字符串的长度,指的是OC字符串里,元素的个数。 NSString *string1 = @"不作死,就不会死"; // NSString *string1 = [NSString stringWithUTF8String:"不作死,就不会死"]; NSLog(@"%lu",[string1 length]); // 获取OC字符串里,对应索引(下标)的元素。 // OC数组里,保存的实际上并不是C的字符串,而是unichar的数组。unsigned short,一个元素占两个字节。'l':006C, '死': 6b7b // OC的数组里,就不是C字符串,所以,就不需要有尾0. unichar c = [string characterAtIndex:2]; // unichar 我们用%C来打印 NSLog(@"c = %C",c); c = [string1 characterAtIndex:2]; NSLog(@"c = %C,%x",c,c); // __NSCFConstantString __NSCFString // 看到崩溃日志,characterAtIndex:崩溃调用的类是如上两个,实际有多个。说明了,NSString,是由类簇来实现的,像由类簇实现的类,我们不能去继承。 // 获取下标为8的元素,会崩溃,因为OC数组每个元素都是unichar格式的,不需要有尾0 // [string1 characterAtIndex:8]; // [string1 characterAtIndex:[string1 length]]; // 注意,上面的方法不用get,因为get在OC/IOS的方法命名里尤其特殊的用法 unichar buf[10] = {0}; // get在OC/IOS命名里面的用法如下,不是通过返回值返回,而是通过函数的参数返回内容,用get这个单词。 // 将一个range范围的内容,返回到buf里面去(不要越界)。 [string1 getCharacters:buf range:NSMakeRange(2, 6)]; for (int i=0; buf[i]!=0; i++) { NSLog(@"buf[%d] = %C",i,buf[i]); } // 返回一个所有字符都大写的新的字符串对象 // NSString这个字符串对象,一旦创建,就无法改变其内容了。 // 因此这个方法,并不是将string的所有字符大写,而是创建一个所有字符多大写的新的对象,返回。 NSString *string2 = [string uppercaseString]; NSLog(@"string = %@",string); NSLog(@"string2 = %@",string2); // 返回一个所有字符都小写的新的字符串对象 NSString *string3 = [string2 lowercaseString]; NSLog(@"string3 = %@",string3); // 返回一个所有单词首字符大写,其他字符都小写的新的字符串对象 NSString *string4 = [@"helloworld,abc doyou do" capitalizedString]; NSLog(@"string4 = %@",string4); // 返回从index下标开始,一直到结束的子串(新的字符串对象)。 // 注意,它包含index下标的字符 NSString *string5 = [string4 substringFromIndex:[@"hello" length]]; NSLog(@"string5 = %@",string5); // 返回从头开始,到index下标结束的子串(新的字符串对象)。 // 注意,它不包含index下标的字符 NSString *string6 = [string4 substringToIndex:5]; NSLog(@"string6 = %@",string6); // 返回一个从下标为3开始,长度为4的子串(新的字符串对象)。 NSString *string7 = [string4 substringWithRange:NSMakeRange(3, 4)]; NSLog(@"string7 = %@",string7); // 返回string4对应的"world"字符串的范围,如果找到了,返回的是对应的下标和长度,找不到返回NSNotFound NSRange range = [string4 rangeOfString:@"world"]; // 将一个range,转换成一个NSString的对象。 NSLog(@"range = %@",NSStringFromRange(range)); range = [string4 rangeOfString:@"world"]; // 如果range.location等于NSNotFound,则表示没有找到 // NSNotFound 是long的最大值 if (range.location != NSNotFound) { NSLog(@"找到了,range = %@",NSStringFromRange(range)); } else { NSLog(@"没找到,range = %@",NSStringFromRange(range)); } // string是一个指针,保存一个字符串对象的地址而已。 // 不能变的是string指针指向的NSString类型的对象的内容不能变。 string = @"http://192.168.88.8"; NSLog(@"string = %@",string); // 判断string字符串,是否以@"http"开头,是返回YES(1),否则返回NO(0) if ([string hasPrefix:@"http"]) { NSLog(@"这是一个网址!"); } // 判断@"北京.mp3"字符串,是否以@"mp3"结尾,是返回YES(1),否则返回NO(0) if ([@"北京.mp3" hasSuffix:@"mp3"]) { NSLog(@"这是一个音乐!"); } // 将一个字符串对象转换为一个整数/浮点数... NSLog(@"%d",[@" -123abc" intValue]); NSLog(@"%.2f",[@" 3.14abc" floatValue]);}+ (void)NSStringCompareMethod{ NSString *string = @"Hello world"; NSString *string1 = @"hello world"; // is, has 开头,一般返回的BOOL // 比较string和string1两个字符串的内容是否相等。 if ([string isEqualToString:@"Hello world"]) { NSLog(@"相等"); } /* compare: 返回值是一个枚举类型,有如下三个枚举 NSOrderedAscending = -1L, 升序 NSOrderedSame, 同序 NSOrderedDescending 降序 返回值从string,到string1,是一个什么增长顺序 */ if ([string compare:string1] == NSOrderedAscending) { NSLog(@"升序!"); } if ([@"abc" compare:@"ABC"] == NSOrderedDescending) { NSLog(@"降序!"); } // 不区分大小写比较 if ([string caseInsensitiveCompare:string1] == NSOrderedSame) { NSLog(@"不区分大小写,他们相等!"); } // 比较string和string1,带比较的参数。 // 如果options的值为NSCaseInsensitiveSearch,就等价于caseInsensitiveCompare: 这个方法 if ([string compare:string1 options:NSCaseInsensitiveSearch] == NSOrderedSame) { NSLog(@"不区分大小写,他们相等!"); } if ([@"hello123.txt" compare:@"hello5.txt"] == NSOrderedAscending) { NSLog(@"升序"); } // 将字符串里的数字字符,当做一个数值去比较 (123>5) if ([@"hello123.txt" compare:@"hello5.txt" options:NSNumericSearch] == NSOrderedDescending) { NSLog(@"降序"); } // 比较这两个字符串,既不区分大小写,又降数字字符当做整数去比较。 if ([@"HELLO123.txt" compare:@"hello5.txt" options:NSCaseInsensitiveSearch|NSNumericSearch] == NSOrderedDescending) { NSLog(@"确实是降序!"); }}/* - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask{ switch (mask) { case NSCaseInsensitiveSearch: 0000 0001 xxxx; break; case ....: ... break; case NSNumericSearch: 0100 0000 yyyy; break; case NSCaseInsensitiveSearch|NSNumericSearch: 0100 0001 zzzz; brea; } return ...} */// NSString这个类实例的字符串对象,一旦初始化完成,就不能再改变了。 NSMutableString它是可以改变的。// @interface NSMutableString : NSString NSMutableString是继承与NSString的,说明,NSString里的方法,NSMutableString都可以用。+ (void)NSMutableStringCreateMethod{ NSString *string = @"Hello world"; // 用string的内容,来初始化一个可变的string1字符串。 // 这个方法,我们也常说成是,将一个不可变字符串,转成可变字符串。(实际上是创建了一个新的可变字符串对象,只不过里面的内容,是原来的内容) NSMutableString *string1 = [[NSMutableString alloc] initWithString:string]; NSLog(@"string1 = %@",string1); // 用对应的加方法 (注意,参数是NSString类型,但我们传了一个NSMutableString的对象) // 父类的指针,可以指向子类的对象,被称为赋值兼容原则。 // 这样的赋值是安全的。 // 但反过来,是不允许的,这样的赋值是不安全的。 NSMutableString *string2 = [[NSMutableString alloc] initWithString:string1]; NSLog(@"string2 = %@",string2); // 我们从来不再NSString用这俩方法,但NSMutableString就可以用了。 // 创建了两个字符串对象,但字符串对象里的内容为空。 // NSString *string3 = [[NSString alloc] init]; // NSString *string4 = [NSString string]; // 注意,和NSString *string5 = nil; 是不一样的。 // 创建一个空的可变字符串 NSMutableString *string3 = [[NSMutableString alloc] init]; // 判断字符串内容为空的方法 if ([string3 length] == 0) { NSLog(@"字符串的内容为空"); } NSMutableString *string4 = [NSMutableString string]; // 另外一种判断字符串内容为空的方法 if ([string4 isEqualToString:@""]) { NSLog(@"字符串的内容为空"); } // NSMutableString 自己的创建字符串的方法 // 创建一个预设字符串长度为10的可变字符串对象,注意,此时字符串的内容为空。 // 如果说,我们创建的字符串对象,能提前确认他的元素的话,我们习惯用initWithCapacity:方法,来预设一个长度。这样的话,效率更高一些。 NSMutableString *string5 = [[NSMutableString alloc] initWithCapacity:10]; NSLog(@"%lu",[string5 length]); // 对应的加方法 NSMutableString *string6 = [NSMutableString stringWithCapacity:10]; NSLog(@"%lu",[string6 length]);}+ (void)NSMutableStringSimpleMethod{ // 对于可变字符串来说,他的方法就是,增加,删除,修改,插入。 NSMutableString *string = [[NSMutableString alloc] init]; // 追加 (在string的尾部,追加一个字符串的内容) [string appendString:@"Hello"]; NSLog(@"string = %@",string); // 在string的尾部,追加一个格式化的字符串内容。 [string appendFormat:@"%cworld %d",' ',100]; NSLog(@"string = %@",string); // 插入 // 将@"are"字符串,插入到下标为5的位置 [string insertString:@"are" atIndex:5]; NSLog(@"string = %@",string); // 将@"Good"字符串,插入到最前面。 [string insertString:@"Good" atIndex:0]; NSLog(@"string = %@",string); // 可以进行尾插,相当于追加字符串。 (但不能没有节操) [string insertString:@"Bye" atIndex:[string length]]; NSLog(@"string = %@",string); // 替换 // 将Hello开始,到100结束的内容,替换成空格 // GoodHelloare world 100Bye // NSRange range = [string rangeOfString:@"Helloare world 100"]; // [string replaceCharactersInRange:range withString:@" "]; NSRange range1 = [string rangeOfString:@"Hello"]; NSRange range2 = [string rangeOfString:@"100"]; NSRange range = NSMakeRange(range1.location, range2.location+range2.length-range1.location); [string replaceCharactersInRange:range withString:@" "]; NSLog(@"替换string = %@",string); // 删除 range = [string rangeOfString:@" "]; // 删除一个range区域的内容 [string deleteCharactersInRange:range]; NSLog(@"string = %@",string); // 重设字符串的内容,用一个字符串的内容,重设string里的内容。 [string setString:@"Hello world"]; // 注意,不等价于string = @"Hello world"; NSLog(@"string = %@",string);}
0 0
- iOS-OC-NSString和NSMutableString用法大全
- oc NSString和NSMutableString基本用法
- oc NSString和NSMutableString基本用法
- iOS中NSString和NSMutableString的用法
- OC中的NSString和NSMutableString
- OC语言-----NSString,NSMutableString基本用法
- IOS基础 NSString 和 NSMutableString
- ios-NSString和NSMutableString函数
- OC - NSString/NSMutablestring
- iOS NSString,NSMutableString的常用用法
- iOS NSString+NSMutableString+NSValue+NSArry用法汇总
- 黑马程序员---OC学习笔记之NSString的其他使用和NSMutableString的用法
- NSString 和 NSMutableString 定义和基本用法
- 黑马程序员 --- NSString和NSMutableString的用法
- NSString 和 NSMutableString 的用法小结
- NSString 和 NSMutableString类的常见用法
- Foundation 之字符串 NSString和NSMutableString 用法
- iOS开发总结之 NSString和NSMutableString
- 第八章 网络的时代—网络开发(4)
- springMVC—三种控制器controller
- python 线程、进程和协程
- UITableView beginUpdates和endUpdates-实现UITableView的动画块
- Java面试题全集(上)
- iOS-OC-NSString和NSMutableString用法大全
- PHP进阶
- Console 相关操作
- 网站高并发(一)
- Inventor API: 简单聊聊ReplaceReference , FileSaveAs, OnFileResolution
- iOS-OC-NSDictionary和NSMutableDictionary用法大全详细说明
- 7、JSONArray的应用
- 回到顶部功能实现
- 二叉树的前序遍历