OC 4 字符串

1.OC中的基本类型
NSInteger在64位相等于long,在非64位相当于int
CGFloat在64位相当于double,在非64位相当于float

2.如何使用API文档学习系统库中的类
help>Documentation  and  API   reference以这种方式进入API文档
快捷键:option  +  左键   进入API文档  cmd  + 左键  进入类的头文件(严重警告进系统头文件之后,退出时一定要按几次 cmd  +  Z)看系统头文件适合已经对这个类有很大的了解的

3.看系统API文档是需要注意哪些关键字
Inherits  from   继承自哪个类
conform  to 遵循哪个协议
framwork  这个类定义在哪个框架下
Availability  从ios哪个版本开始支持使用这个类
Decleard in 声明在哪个头文件中
Samp  code  示例代码
guides  相关指南

4.NSString是一个字符串类,而且是一个不可变的字符串类,父类是NSObject,用NSString创建出来的对象,一经创建就不能修改;NSMatbleString是NSString的子类

5.类簇:将一些私有的子类,组合在一起,形成一个公共的抽象的超类,那么这个超类就是类簇
6.OC中如何创建字符串
(1)快速创建字符串的方法
NSString  *str = @“lanou”;

(2)创建空字符串
NSString  *str1 = [ [NSString  alloc]init];
NSLog(@"内容:%@,地址:%p",str1,str1);
str1 = @"nihao";//这种改变是指针的重指向
NSLog(@"内容:%@,地址:%p",str1,str1);
NSString  *str2 = [NSString  string];
NSLog(@"====%@",str2);
创建不可变空字符串是没有任何意义的
(3)创建格式化不可变字符串对象
NSString  *str3 = [ [ NSString   alloc]initWithFormat:@“%@ %@“,@“lanou”,@“I love you”];
NSString *str4 = [ [NSString alloc]initWithFormat: @"%@",@"凤姐"];
 NSLog(@"%@",str3);
 NSLog(@"%@",str4);

4)创建字符串的另一种方式,现在一经不用了
NSString  *str5 = [ [NSString  alloc]initWithString: @"我在兰鸥"];
NSString *str5 = [NSString stringWithString:@"我也在37班,我怎么不认识"];

(5)将c语言的字符串转换成OC 字符串
NSString   *str6 = [ [NSString  alloc]initWithUTF8String: "ios"];
NSLog(@"%@",str6);
NSString *str7  = [NSString stringWithUTF8String: "ios"];
 NSLog(@"%@",str7);

(6)将文件中的字符内容传到字符串对象中
第一个参数:文件的路径 
第二个参数:编码格式
第三个参数:如果出错了返回值存放的位置
NSString   *str8  = [ [ NSString   alloc]initwithContentsOfFile:  “文件路径的"    encoding: "编码格式"    NSUTF8StringEncoding  error: nil];
 NSLog(@"%@",str8);

NSString    *str9 = [ [NSString   stringWithContentsOfFile:“文件路径的" encoding: NSUTF8StringEncoding error: nil];
//    NSLog(@"%@",str9);

(7)操作字符串的方法
计算字符串长度的方法
NSString  *ss =  @“lanou3g”;
NSUInteger   len = [ss  length];
NSLog(@"%lu",len);

一个中文占三个字节
NSString  *ss2   = @"祥哥,今天晚上去如家吧? ";
NSLog(@"%lu",ss2.length);

(8)返回某个字符串片段的方法
NSRange 是OC中的结构体,结构体有两个成员变量,location表示起始位置,length表示从起始位置取多长
NSString   *str10  = @"abcdefg" ;

NSRange   rang  = {3,3};
NSString  *sunString = [str10  substringWithRange:ran];
NSLog(@"%@",sunString);

(9)返回子串在父串的范围
rang = [str10  rangeOfString: @"def"];
NSLog(@"loctation:%lu length:%lu",rang.location,rang.length);

(10)获取到从0位置到某个位置的字符串不包括提供位置的字符
NSString *str11  = [str10  substringToIndex:4];
 NSLog(@"%@",str11);
(11)从某个位置开始获得字符串,直到父串的结尾,包含提供位置的字符
NSString  *str12 = [str10  substringFromIndex:4];
 NSLog(@"%@",str12);

(12)返回格式化拼接的字符串
NSString    *str13   = [str11  stringByAppendingFormat: @"%@",str12];
NSLog(@"%@",str13);

(13)字符串的替换,将目标子串从父串中用我们给定字符串替换掉
NSString    *str14    =  [str13  stringByReplacingOccurrencesOftring @"苍老师":  withString: @"波多野结衣"];
NSLog(@"%@",str14);

(14)判断一个字符串是否有前缀和后缀
先创建一个字符串
NSString  *str15  =  @"中国北京中南海地区";
BOOL  isHas =  [str15   hasPrefix: @"中国北京"];
 NSLog(@"%@",isHas? @"有这个前缀" : @"没有这个前缀");
isHas = [str15   hasSuffix: @"地区"];
NSLog(@"%@",isHas? @"有这个后缀" : @"没有这个后缀");


练习题1
//判断字符串@"陈冠希"是否有.jpg,如果没有给他拼接上.jpg,如果有.jpg,将.jpg替换为.png
    NSString  *cString = @"
陈冠希";
    NSString  *newCstring = nil;
   
    BOOL  isHave = [cString hasSuffix:@".jpg"];
        if (isHave) {
            newCstring = [cString stringByReplacingOccurrencesOfString:@".jpg" withString:@"png"];
        }else{
            newCstring = [cString stringByAppendingString:@".jpg"];
        }
           NSLog(@"%@",newCstring);
   
(15)oc中判断两个字符串是否相等的方法
NSString   *sStr  = @"吉泽明步" ;
NSString    *sStr1 = @"吉泽明步" ;
BOOL  isEqual  = [sStr  isEqualToString:sStr1];
NSLog(@"%@",isEqual? @"相等":@"不相等");

练习题2
模拟qq用户登录界面,判断用户输入的密码和用户名,和服务器里存储的用户名和密码是否相同,如果都相同则显示登录成功,否则,显示用户名和密码错误
   
//#define kUserName @"827346996"
//#define kPassWord @"max1893718"
   
    NSString *inputName = @"827346996";
    NSString *inputPassWord = @"max1893718";
   
    BOOL isHork = [inputName isEqualToString:kUserName];
    BOOL isPassWord = [inputPassWord isEqualToString:kPassWord];
    if (isHork && isPassWord) {
        NSLog(@"
登陆成功");
    }else{
        NSLog(@"
你输入的用户名密码或错误");
    }

(16)比较两个字符串的大小
NSString   *sStr2 = @"NBA";
NSString   *sStr3 = @"Nba"   ;
[sStr2   compare:sStr3];

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
     NSOrderedAscending  -1
升序,前一个字符串小于后一个字符串
     NSOrderedSame 0
相等
     NSOrderedDescending 1 降序,前一个字符串要大于后一个字符串
NSInteger  n = [sStr2 compare:sStr3];
switch(n){
case NSOrderedSame:
 NSLog(@"%@=%@",sStr2,sStr3);
break;
case  NSOrderedAscending:
 NSLog(@"%@ <%@",sStr2,sStr3);
break;
case   NSOrderedDescending:
 NSLog(@"%@ > %@",sStr2,sStr3);
break;
default:
break;

(17)不区分大小写的方式
n = [sStr2  caseInsensitiveCompare:sStr3];
NSLog(@"%ld",n);

6.NSMutableString是可变字符串,继承的是NSString,所以NSString的所有方法,NSMutableString都可以调用
(1)这种创建字符串的形式可以提高一定的效率,如果存入的字符串长度小于开辟的虚拟空间的长度,则直接放入,免去了开辟空间的时间,如果此时开辟的空间小于要放入的字符串的长度,此时,就要再开辟空间长度
NSMUtableString  *mStr = [ [NSMutableString  alloc]initWithCapacity:10];
(2)插入一个字符串
[mStr insertString: @"索宁"   atIndex:0];
 NSLog(@"%@",mStr);

(3)创建可变字符串的另一种方法,这个方法是它父类的
NSMutableString  *Str1 = [ [NSMutableString alloc]initWithString: @"我与索宁有个约会"];
  NSLog(@"%@",Str1);

(4)快速创建可变字符串,必须在后面加上.mutableCopy
NSMutableString  *mStr2  = @"我和僵尸有个约会"  .mutableCopy;

(5)可变字符串拼接
格式化拼接
[mStr2   appendFormat: @"%@",@"在日本广岛"];
 NSLog(@"%@",mStr2);
[mStr2   appendString: @"吃着炸鸡喝着啤酒"];
 NSLog(@"%@",mStr2);
(6)删除某段字符串
NSRange   rang1  = {1,7};
[mStr2    deleteCharactersInRange:rang1];
 NSLog(@"%@",mStr2);
(7)改可变字符串
[mStr2  replaceCharactersInRange: NSMakeRange(2, 4)   withSting:  @"人民广场" ];
 NSLog(@"%@",mStr2);

(8)每个单词首字母大写
NSMutableString  *mStr3  =  @"i am student come DanCheng.mutableCopy;;
NSString     *upFirstWord  = [mStr3  capitalizedString];
 NSLog(@"%@",upFirstWord);
(9)将所有单词都大写
NSString    *upAllWord  = [mStr3  uppercaseString];
 NSLog(@"%@",upAllWord);
(10)将所有字母小写
NSMutableString   *mStr4  = @"I AM".mutableCopy ;
NSString   *lowerAllWord  =  [mStr4  lowercaseString];
 NSLog(@"%@",lowerAllWord);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值