Foundation框架之字符串

Foundation框架 简介

Foundation框架是Cocoa编程、iOS编程的基础框架,它包括字符串、集合、日期、时间等基础.

目录如下:
  1. NSString和NSMutableString
  • 代表日期、时间的NSDate]
  • NSCopying和NSMutableCopying
  • NSArray和NSMutableArray
  • NSSet和NSMutableSet和NSCountedSet
  • NSOrderedSet和NSMutableOrderedSet
  • NSDictionary和NSMutableDictionary

1. 创建字符串

NSString大致功能
  1. 创建字符串:创建字符串既可使用init开头的实例方法,也可以使用string开头的类方法,当然也可以直接用@“”的形式给出字符串直接量;
  2. 读取文件或网络URL来初始化字符串;
  3. 将字符串内容写入文件或URL;
  4. 获取字符串长度,即可获取字符串包括的字符个数,也可以获取字符串包括的字节个数;
  5. 获取字符串中的字符或字节,既可获取指定位置的字符,也可以获取指定范围的字符;
  6. 获取字符串对应的C风格字符串;
  7. 连接字符串;
  8. 分隔字符串;
  9. 查找字符串内对象的字符和子串;
  10. 替换字符串;
  11. 比较字符串;
  12. 字符串大小比较;
  13. 对字符串中的字符进行大小写替换
//typedef unsigned short定义
unichar data[6] = {97,98,99,100,101,102};

//使用unicode数值数组初始化字符串
NSString* str1 = [[NSString alloc]initWithCharacters:data length:6];
NSLog(@"%@",str1);
char* cstr = "Hello iOS!";

//将C风格的字符串转换成NSString对象
NSString* str2 = [NSString stringWithUTF8String:cstr];
NSLog(@"%@",str2);

//将字符串写入自定文件
[str2 writeToFile:@"myFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

//读取文件内容,用文件内容初始化字符串
NSString* str3 = [NSString stringWithContentsOfFile:@"myFile.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",str3);

2. NSString的常用功能

NSString* str = @"Hello”;
NSString* str1 = @"hello";
NSString* book = @"《疯狂iOS讲义》”;
1. 在str后面追加固定的字符串
//原来的字符串对象并不改变,只是将新生成的字符串重新赋给str指针变量
str = [str stringByAppendingString:@",iOS!"];
NSLog(@"%@",str);//Hello,iOS!
2. 获取字符串中的字符
unichar OCChar = [str characterAtIndex:1];
NSLog(@"%C",OCChar);//e
3. 获取字符串对象的C风格字符串
const char* cstr = [str UTF8String];
NSLog(@"获取的C字符串%s",cstr);//获取的C字符串Hello,iOS!
4. 比较两个字符串是否相等 相等返回1(yes),不相等返回0(no)
BOOL ret = [str isEqualToString:str1];
NSLog(@"%d",ret);//0
5.比较字符串
//大小,compare:方法返回NSComparisonResult枚举值
//该枚举类型包含NSOrderedAscending、NSOrderedSame、NSOrderedDescending三个值
//分别代表调用compare:的字符串位于被比较字符串小、相等、大
switch ([str compare:str1]) {
    case NSOrderedAscending:
        NSLog(@"str小于str1");//str小于str1
        break;
    case NSOrderedSame:
        NSLog(@"str与str1相等");
        break;
    case NSOrderedDescending:
        NSLog(@"str大于str1");
        break;
    default:
        break;
}
//不区分大小的比较
NSComparisonResult result = [str caseInsensitiveCompare:str1];
NSLog(@"%ld",result);
6. 在str后面追加带变量的字符串
str = [str stringByAppendingFormat:@"%@是一本非常不错的图书.",book];
NSLog(@"%@",str);//Hello,iOS!《疯狂iOS讲义》是一本非常不错的图书.
7. 获取字符串的字符个数
NSLog(@"str的字符个数:%lu",[str length]);//str的字符个数:30
8. 获取str按UTF-8字符集解码后字节数
//
NSLog(@"str按UTF-8字符集解码后字节数:%lu",[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);//str按UTF-8字符集解码后字节数:62
9. 获取str前10个字符组成的字符串
NSString* s1 = [str substringToIndex:10];
NSLog(@"%@",s1);//Hello,iOS!
10. 获取str从第6个字符开始,与后面的字符组成的字符串
NSString* s2 = [str substringFromIndex:6];
NSLog(@"%@",s2);//iOS!《疯狂iOS讲义》是一本非常不错的图书.
11. 获取str从第6个字符开始,到第15个字符组成的字符串
NSString* s3 = [str substringWithRange:NSMakeRange(6, 15)];
NSLog(@"%@",s3);//iOS!《疯狂iOS讲义》是一
12. 获取iOS在str中出现的位置
//获取iOS在str中出现的位置 从前向后遍历
NSRange pos = [str rangeOfString:@"iOS"];
NSLog(@"iOS在str出现的开始位置:%ld,长度为:%ld",pos.location,pos.length);//iOS在str出现的开始位置:6,长度为:3
//获取iOS在str中出现的位置 从后向前遍历
NSRange pos1 = [str rangeOfString:@"iOS" options:NSBackwardsSearch];
NSLog(@"iOS在str出现的结束位置:%ld,长度为:%ld",pos1.location,pos1.length);//iOS在str出现的开始位置:6,长度为:3
13. 将str的所有字符转为大写
str = [str uppercaseString];
NSLog(@"%@",str);//HELLO,IOS!《疯狂IOS讲义》是一本非常不错的图书.
14. 将str的所有字符转为小写

str = [str lowercaseString];
NSLog(@"%@",str);//hello,ios!《疯狂ios讲义》是一本非常不错的图书.
15. 前缀后缀
//前缀
BOOL ret1 = [str hasPrefix:@"He"];
NSLog(@"%d",ret1);
//后缀
BOOL ret2 = [str hasSuffix:@"."];
NSLog(@"%d",ret2);

3. 可变字符串(NSMutableString)

NSString类是不可变的类,即一旦NSString对象被创建,包含在这个对象中的字符串序列是不可改变的,直至这个对象被销毁。
NSSMutableString对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,NSString包含的方法,NSMutableString都可直接使用。
通过方法改变NSMutableString的字符序列:

NSString* book = @"《疯狂iOS讲义》”;
1. 创建一个NSMutableString对象
NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
2. 追加固定字符串
//字符串所包含的字符序列本身发生改变,因此无须重新赋值
[str appendString:@",iOS!"];
NSLog(@"%@",str);//Hello,iOS!
3. 追加带变量的字符串
//字符串包含的字符序列本身发生了改变,因此无需重新赋值
[str appendFormat:@"%@这是一本非常不错的图书。",book];
NSLog(@"%@",str);//Hello,iOS!《疯狂iOS讲义》这是一本非常不错的图书。
4. 在指定位置插入字符串
//字符串包含的字符序列本身发生了改变,因此无需重新赋值
[str insertString:@"fkit.org" atIndex:6];
NSLog(@"%@",str);//Hello,fkit.orgiOS!《疯狂iOS讲义》这是一本非常不错的图书。
5. 删除从位置6到位置18的所有字符
[str deleteCharactersInRange:NSMakeRange(6, 12)];
NSLog(@"%@",str);//Hello,《疯狂iOS讲义》这是一本非常不错的图书。
6. 将从位置6到位置15的字符串替换成Objective-C
[str replaceCharactersInRange:NSMakeRange(6, 9) withString:@"Objective-C"];
NSLog(@"%@",str);//Hello,Objective-C这是一本非常不错的图书。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容