一 NSString对象
1.字符串对象创建
//字符串对象
//1.字符串前加上@ @表示对象
//OCStr1是一个对象指针,指向常量区的字符串对象
NSString *OCStr1 = @"China";//存储在常量区
//NSLog 自动换行
NSLog(@"OCStr1 = %@",OCStr1);
// 字符串对象的创建—构造方法
//用C语言的字符串构造一个OC字符串对象
//initWithUTF8String 方法名 用C语言字符串构造一个OC字符串
NSString *OCStr2 = [[NSString alloc] initWithUTF8String:"welcome to china" ];
/*NSString *OCStr2 = [NSString alloc];//先分配内存空间
OCStr2 = [OCStr2 initWithUTF8String :"welcome to china"] ;*/ //再初始化
NSLog(@"OCStr2 = %@",OCStr2);
//格式化构造OC字符串对象
//@ 为字符串对象 alloc 创建对象 init 初始化
//initWithFormat 格式化构造OC字符串
NSString *OCStr3 = [[NSString alloc] initWithFormat:@"%@##%i##%@",@"welcome",888,@"hello" ];
NSLog(@"OCStr3 = %@",OCStr3);
//传递字符串对象
//NSString *name
//用传递的字符串对象构造新的字符串对象
//initWithStrig 用传递的方法构造字符
NSString *OCStr = @"上海火车站" ;
NSString *OCStr4 = [[NSString alloc] initWithString:OCStr];
NSLog(@"OCStr4 = %@",OCStr4);
//用C语言的字符串构造OC字符串对象
NSString *OCStr5 = [[NSString alloc] initWithCString:"中国教育" encoding:NSUTF8StringEncoding];
NSLog(@"OCStr5 = %@",OCStr5);
//创建字符串对象 ------- 类方法
//把C语言字符串转换成OC字符串对象
NSString *OCStr6 = [NSString stringWithUTF8String:"hello world"];
NSLog(@"OCStr6 = %@",OCStr6);
//用传入的字符串对象创建新的字符串对象
NSString *OCStr7 = [NSString stringWithString: OCStr];
NSLog(@"OCStr7 = %@" ,OCStr7);
//格式化创建字符串对象
NSString *OCStr8 = [NSString stringWithFormat:@"%d*%g*%s",123,89.43,"hello world" ];
NSLog(@"OCStr8 = %@" ,OCStr8);
//用C语言的字符串创建OC字符串对象
NSString *OCStr9 = [NSString stringWithCString:"i am a good boy 中国" encoding: NSUTF8StringEncoding];
NSLog(@"OCStr9 = %@" ,OCStr9);
//上面的返回值是字符串类型
//字符串其他常用方法
//求字符串的长度
NSString *str = @"welcome 中国" ;
//NSInteger long int 类型
NSInteger len = [str length] ;
NSLog(@"len = %li",len);
2.比较字符串大小
//#define YES ((Bool)1)
//#define NO ((Bool)0)
//BOOL:返回值类型 ret4 :返回值 isEquarlToString 方法
BOOL ret4 = [str5 isEqualToString:str6];
if ( ret4 == YES)
{
NSLog(@"str5 等于 str6");
}
else
{
NSLog(@"str5 不等于 str6");
}
3.区分大小写比较字符串大小
//compare : 判断两个字符串是否相等 方法名
//返回值 是下面三个
//NSOrderedAsending = -1 递增
//NSOrderedSame 相等
//NSOrderedDescending 递减
//NSComparisonResultret1 : ret1 是比较完的返回值 NSComparisonResult:返回值类型
NSComparisonResult ret1 = [str1 compare:str2];
if (ret1 == NSOrderedAscending)
{
NSLog(@"str1 小于 str2");
}
else if (ret1 == NSOrderedSame)
{
NSLog(@"str1 等于 str2");
}
else if (ret1 == NSOrderedDescending)
{
NSLog(@"str1 大于 str2") ;
}
4.不敏感区分大小写比较字符串大小
NSString *str3 = @"welcome To china";
NSString *str4 = @"welcome to china";
NSComparisonResult ret2 = [str3 caseInsensitiveCompare:str4];
if (ret2 == NSOrderedAscending)
{
NSLog(@"str3 小于 str4");
}
else if ( ret2 == NSOrderedSame)
{
NSLog(@"str3 等于 str4");
}
else if ( ret2 == NSOrderedDescending)
{
NSLog(@"str3 大于 str4");
}
//compare 方法 不区分英文大小写
NSComparisonResult ret3 = [str3 compare:str4 options:NSCaseInsensitiveSearch];
if (ret3 == NSOrderedAscending)
{
NSLog(@"str3 小于 str4");
}
else if ( ret3 == NSOrderedSame)
{
NSLog(@"str3 等于 str4");
}
else if ( ret3 == NSOrderedDescending)
{
NSLog(@"str3 大于 str4");
}
4.字符串判断
//#define YES ((Bool)1)
//#define NO ((Bool)0)
//BOOL:返回值类型 ret4 :返回值 isEquarlToString 方法
BOOL ret4 = [str5 isEqualToString:str6];
if ( ret4 == YES)
{
NSLog(@"str5 等于 str6");
}
else
{
NSLog(@"str5 不等于 str6");
}
//判断是否以传入字符串开头的字符串 返回值为BOOL类型
BOOL ret5 = [@"www.baidu.com" hasPrefix:@"www"];
if ( ret5 == YES)
{
NSLog(@"是以传入字符串开头");
}
else
{
NSLog(@"不是以传入字符串开头");
}
//判断是否以传入字符串结尾的字符串
BOOL ret6 = [@"www.baidu.com" hasSuffix:@".com"];
NSLog(@"ret6 = %i",ret6);
5.字符串追加
//字符串的追加 不是str7 直接变成 baidu.com 不是直接追加
//NSString 创建的是不可变字符串对象 不能直接在原字符串末尾追加字符串,只能利用原字符串及传入的字符串对象创建新的字符串返回
NSString *str7 = @"baidu";
NSString *str8 = [str7 stringByAppendingString:@".com"];
NSLog(@"str7 = %@",str7);//str7 = baidu
NSLog(@"str8 = %@",str8);//str8 = baidu.com
//格式化追加字符串
NSString *str9 = [str7 stringByAppendingFormat:@"%d%s",123,"hello world"];
NSLog(@"str9 = %@",str9);//str9 = baidu123hello world
6.字符串提取
//字符串的提取 从指定位置提取子串到字符串末尾
NSString *str10 = @"www.hao123.com";
// 返回值是一个字符串 提取子串 下标
NSString *sbuString = [str10 substringFromIndex:4];
NSLog(@"subString = %@",sbuString); //subString = hao123.com
//NSLog(@"subString = %@",[str10 substringFromIndex:4]);
//提取子串到指定位置,不包含指定下标位置的字符
NSLog(@"subString = %@",[str10 substringToIndex:4]);//subSring = www.
//提取指定范围的子串
/*typedef struct _NSRange {
NSUInteger location ;//提取子串的位置
NSUInteger length ;//提取子串的长度
}NSRange;*/
NSRange range1 = {4,6};
// 冒号后面传入一个结构体
NSLog(@"subString = %@",[str10 substringWithRange:range1]); // subString = hao123
//NSRange NSMakeRange(NSUInteger loc, NSUInteger len)
//返回一个NSRange类型的值
NSLog(@"subString = %@",[str10 substringWithRange:NSMakeRange(4, 6)]); //subString = hao123
7.字符串查找
//字符串的查找
NSString *str11 = @"bai du hello du world bai du";
//返回一个结构体 返回子串在原字符串中的范围
//
NSRange range2 = [str11 rangeOfString:@"world"] ;
if ( range2.location == NSNotFound )
{
NSLog(@"没有查找到该子串 NSNotFound = %li",NSNotFound) ;
//NSNotFound 是long类型范围类的最大值
}
else
{
NSLog(@"查找到该子串, loction = %li length = %li",range2.location , range2.length);
}
8.转大小写
//转大写
res = [str1 uppercaseString];
NSLog(@"str1转大写为:%@",res);
//转小写
res = [str2 lowercaseString];
NSLog(@"str2转小写为:%@",res);