本文主要介绍 Objective-C 中 NSSting \ NSMutableString \NSArray 的常用方法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
#pragma mark 不可改变字符串
//1.字符串使用
char *str = "Hello World!";
NSString *str1 = [[NSString alloc] init];//创建空字符串
NSString *str2 = @"Hello World!";//创建常量字符串
NSString *str3 = [[NSString alloc] initWithString:str2];//NSString*类型
NSString *str4 = [[NSString alloc] initWithUTF8String:str];//将C语言的字符串转换成OC的字符串(UTF8的编码格式),char类型
NSString *str5 = [NSString stringWithString:str2];//通过已知字符串创建新的字符串
NSString *str6 = [NSString stringWithUTF8String:str];//类方法
NSString *str7 = [NSString stringWithFormat:@"%@%c%d",@"Hello World!",'V',88];//需要重点掌握***
//2.判断两个字符串是否相等
BOOL ret = [str6 isEqualTo: str5];
if (ret) {
NSLog(@"Equal");
}
else
NSLog(@"Unequal");
//3.判断两个字符串的大小
NSComparisonResult result = [str6 compare:str7];
if (result == NSOrderedSame) {
NSLog(@"==");
}
else if (result == NSOrderedAscending)
{
NSLog(@"<");
}
else if (result == NSOrderedDescending)
{
NSLog(@">");
}
[str6 compare: str7 options: NSCaseInsensitiveSearch];//不区分大小写比较
//4.从一个已知的字符串中截取部分字符,成为新的字符串
NSString *str8 = [str7 substringFromIndex:5];//截取开始位置(从第N+1位开始复制字符串)
NSString *str9 = [str7 substringToIndex:5];//截取结束位置(复制字符串到第N位)
NSRange range = NSMakeRange(3, 4);//创建一个范围(第一个参数为从第N+1位开始复制字符串,第二个参数为复制M个字符数)
NSString *str10 = [str7 substringWithRange:range];
NSString *str11 = [str7 substringWithRange:(NSRange){3,4}];//NSMakeRange(3, 4)与(NSRange){3,4}等效
//5.从一个已知的字符串中查找字符串
NSString *tempStr = @"llo3";//定义查找指定字符串
NSRange strRange = [str7 rangeOfString:tempStr];
if (strRange.location == NSNotFound)
{
NSLog(@"NotFound %@ in %@",tempStr,str7);
}
else
{
NSLog(@"%ld,%ld",strRange.location,strRange.length);
}
//6.拼接字符串
NSString *str12 = [str6 stringByAppendingString:str7];//被拼接的两个字符串本身并未发生改变,只是一个拼接参照
NSLog(@"str12:%@",str12);
#pragma mark 可变字符串
NSString *mstr = @"changliang";
//创建空字符串的方法:
NSMutableString *mstr1 = [[NSMutableString alloc] init];
NSMutableString *mstr2 = [NSMutableString string];
NSMutableString *mstr3 = [[NSMutableString alloc] initWithCapacity:100];//预设空间方式(100个字节的)
[mstr1 setString:@"Hello World!"];//设置可变字符串的内容
NSLog(@"mstr1:%@",mstr1);
//可变字符串的特变:增、删、改、查
[mstr1 appendString:@"XXOO"];//追加
NSLog(@"mstr1:%@",mstr1);
[mstr1 appendFormat:@"%@%cnihao",@"Hello World!",'V'];//格式化追加
NSLog(@"mstr1:%@",mstr1);
[mstr1 insertString:@"Hello World!" atIndex:4];//指定下表索引插入
NSLog(@"mstr1:%@",mstr1);
[mstr1 deleteCharactersInRange:(NSRange){3,5}];//删除指定范围的字符
NSLog(@"mstr1:%@",mstr1);
[mstr1 replaceCharactersInRange:(NSRange){2,4} withString:@"VV"];//替换指定范围的字符
NSLog(@"mstr1:%@",mstr1);
NSRange seek = [mstr1 rangeOfString:@"VV"];//查找指定字符串在原字符串中的位置
if (seek.location == NSNotFound) NSLog(@"Erro");
else NSLog(@"%ld,%ld",seek.location,seek.length);
#pragma mark 字符串数组
//1.
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];//通过构造方法直接创建含有3个字符串元素的字符串数组
NSArray *arr2 = @[@"one",@"two",@"three"];//快速创建一个数组
NSArray *arr3 = @[@"1",@"2",@"3"];//OC中数组的元素只能是对象***
NSArray *arr4 = [[NSArray alloc] initWithArray:arr1];//通过一个已知的数组得到一个新的数组
NSLog(@"arr4 = %@",arr4);
NSArray *arr5 = [[NSArray alloc] initWithArray:arr1 copyItems:NO];//此方法做个了解
NSArray *arr6 = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];
NSArray *arr7 = [NSArray arrayWithObjects:&arr6 count:arr6.count];
//2.数组的取值方式
NSString *zstr1 = arr2[0];// 1:相同数据类型 放到一起 集合 有序的 下标索引取值 <=> *(arr2 + 0)
NSLog(@"zstr1:%@",zstr1);
NSString *zstr2 = [arr3 objectAtIndex:1]; //数组的取值方式
NSLog(@"zstr2:%@",zstr2);
//3.遍历数组
//枚举遍历法,用的较少
NSEnumerator *en = [arr4 objectEnumerator];//创建一个枚举器
id obj1;
while (obj1 = [en nextObject]) {
NSLog(@"en:%@",arr2);
}
NSEnumerator *reEn = [arr5 reverseObjectEnumerator];//创建一个逆向的枚举器
id obj2;
while (obj2 = [reEn nextObject]) {
NSLog(@"reEn:%@",arr2);
}
//i遍历法
for (int i = 0; i < arr7.count; i ++)
{
NSLog(@"imethod:%@",[arr7 objectAtIndex:i]);
}
//快速遍历法
for (NSString *obj in arr2)//遍历arr2数组的每个对象,并存储在obj
{
NSLog(@"quick:%@",obj);
}
NSMutableString *container = [NSMutableString string];//构造一个空的可变字符串
[container setString:@"Hello World!"];//为container设置值
NSLog(@"zstr3-0:%@",container);
for (NSString *zstr3 in arr2)//遍历arr2数组的每个对象并存储在zstr3
{
[container appendFormat:@"%@=",zstr3];//对container进行格式化追加
NSLog(@"zstr3-1:%@",container);
}
[container deleteCharactersInRange:(NSRange){container.length - 1,1}];//删除最后一个‘=’
NSLog(@"zstr3-2:%@",container);
NSLog(@"jion:%@",[arr2 componentsJoinedByString:@"="]);//格式化拼接,返回值为NSString类型
}
return 0;
}