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这是一本非常不错的图书。

你可能感兴趣的:(Foundation框架之字符串)