【黑马程序员】Foundation框架NSString

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

一、NSString类介绍及基本应用

 

1、什么是NSString?

       一个NSString对象就代表一个字符串(文字内容)

 

2、NSString的创建方式

       NSString的创建方式比较多

1)最直接的方式(这是常量字符串,存储在常量区)

       NSString *str = @"abc";

       NSString *st3 = @"abc";

2)格式化的方式(字符串存储在内存的堆区)

       NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];

       NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];

 

二、NSString字符串比较

 

1、字符串比较函数 

1)比较字符串大小 

       字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符串的大小的话,可以使用compare方法。 

       compare 方法返回的结果有三种:NSOrderedAscending,NSOrderedSame,NSOrderedDescending, 

       str > str2 NSOrderedDescending 1 b a 

       str < str2 NSOrderedAscending -1 a<b 

       str == str2 NSOrderedSame 0

       另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件 

      NSString*str = @"adc";
      NSString*str2 = @"ADc";
      NSComparisonResultresult = [str compare:str2];
      switch(result) {
      caseNSOrderedDescending:NSLog(@"str > str2");break; 
      caseNSOrderedAscending:NSLog(@"str < str2");break; 
      caseNSOrderedSame:NSLog(@"str == str2");break;
}
      NSLog(@”%ld”,result);

2)比较字符串大小,指定条件

        如果要忽略大小写的话,可以在options 里面加一个参数NSCaseInsensitiveSearch;具体如下:

           NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];

       常见的有3个:

           NSCaseInsensitiveSearch:不区分大小写字符。

           NSLiteralSearch:进行完全比较,区分大小写。(默认)

           NSNumericSearch:比较字符串的字符个数,而不是字符值。 

3判断字符串是否相等

       正确的方法:

           -(BOOL) isEqualToString: (NSString *) aString;

       比较接收方和当作参数传递来的字符串,返回BOOLYESNO)型数据,表示两个字符串的内容是否相同注意区分大小写。

 

三、NSString前后缀检查及搜索

 

1、NSString前后缀检查

1)判断字符串前缀:检查字符串是否以另一个字符串开头

       语法:

          -(BOOL) hasPrefix: (NSString *) aString;

2)判断字符串后缀:判断字符串是否以另一个字符串结尾

       语法:

          -(BOOL) hasSuffix: (NSString *) aString;

 

2、字符串查找

        -(NSRange)rangeOfString:(NSString *)aString;

       用来检查字符串内容中是否包含了aString,如果包含就返回aString在字符串中第一次出现的范围

反方向搜索:

// 从后向前搜索,遇到第一次出现的位置,则结束
        [str rangeOfString: @"str" options: NSBackwardsSearch]; 
typedefstruct_NSRange {
                                    NSUIntegerlocation; //位置
                          NSUIntegerlength; //长度
} NSRange;

 

四、NSRange使用

 

1、NSRange的使用

       NSRangeFoundation框架中比较常用的结构体它的定义如下:

typedef struct _NSRange { 

             NSUInteger location; 

             NSUInteger length;

} NSRange;

       NSUInteger的定义:

            typedef unsigned int NSInteger;

            typedef unsigned long NSUInteger;

       NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

       NSRange2个成员:

            NSUInteger location : 表示该范围的起始位置;

            NSUInteger length : 表示该范围内的长度。

比如@“I love iOS”中的@“iOS”可以用location7length3的范围来表示。

 

2、NSRange创建的几种方式

       有4种方式创建一个NSRange变量

    方式1

NSRange range;

range.location = 7;

range.length = 3;

    方式2

NSRange range = {7, 3};

    或者 

NSRange range = {.location = 7, .length = 3};

    方式3 : 使用NSMakeRange函数

NSRange range = NSMakeRange(7, 3);

   方式4 : 最直接的方式

NSRange range = {5,8};

   查看Range的值,可以使用

NSLog(@"%@",NSStringFromRange(range)); 

 

五、字符串的截取和替换

 

1、字符串的截取

        -(NSString *)substringFromIndex:(NSUInteger)from;

从指定位置from开始(包括指定位置的字符)到尾部;

       -(NSString *)substringToIndex:(NSUInteger)to;

从字符串的开头一直截取到指定的位置to,但不包括该位置的字符;

       -(NSString *)substringWithRange:(NSRange)range;

按照所给出的NSRange从字符串中截取子串。

 

2、字符串的替换

-(NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;

replacement替换target

 

六、NSString的其他用法

 

1、获取字符串的每个字符

       -(NSUInteger)length;

返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符);

       -(unichar)characterAtIndex:(NSUInteger)index;

返回index位置对应的字符。

 

2、字符串和其他数据类型的转换

      字符串转为基本数据类型

-(double)doubleValue;

-(float)floatValue;

-(int)intValue;

       OC字符串转为C语言字符串

NSString *str = @”abc”;

const char *s = [str UTF8String];

       C语言字符串转为OC字符串

char s[] = “abc”;

NSString *str = [NSString stringWtihUTF8String:s];

 

七、NSMutableString介绍和使用

 

1、NSMutableString 基本概念 

      NSMutableString类继承NSString类,那么NSString提供的方法在NSMutableString中基本都可以使用,NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符串删除字符串指定位置插入字符串,使用它来操作字符串会更加灵活。

      NSMutableStringNSString的区别 

NSString是不可变的里面的文字内容是不能进行修改的

NSMutableString是可变的里面的文字内容可以随时更改

NSMutableString能使用NSString的所有方法

 

2、字符串的可变和不可变

       不可变:指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化

       可变:指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改

 

八、NSMutableString常用方法

 

1、NSMutableString 常用方法

       通过调用string方法创建一个空的NSMutableString

-(void)appendString:(NSString *)aString;

       拼接aString到最后面

-(void)appendFormat:(NSString *)format, ...;

       拼接一段格式化字符串到最后面:

-(void)deleteCharactersInRange:(NSRange)range;

       删除range范围内的字符串(一般可以配合rangeOfString删除):

-(void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;

       在loc这个位置中插入aString

-(void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;

使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符串。replaceOccurrencesOfString方法不需要传范围参数。

 

2、字符串使用注意事项

1NSMutableString易犯错误

      注意:

@”hello”这种方式创建的字符串始终是NSString,不是NSMutalbeString.所以下面的代码创建的还是NSString,此时使用可变字符串的函数,无法操作字符串。

NSMutalbeString *s1 = @”hello”;

2NSMutableStringstring属性:会将源对象的所有字符串都覆盖掉。

.string 属性可以修改字符串的内容

3)开发中到底使用NSString还是NSMutableString? 

开发中绝大多数用到的都是NSString 

只是如果需要做特殊处理的时候(截取、拼接、替换)等操作,才考虑使用NSMutableString

4)位枚举,枚举值是20次方、1次方、2次方...... 

NSString *s1 = @"hello";

NSRange range = [s1 rangeOfString:@"o" options:0range:NSMakeRange(0, 5)];

if (range.location == NSNotFound) { 

NSLog(@"没有找到。");

}else { 

NSLog(@"location = %ld, length = %ld", range.location, range.length);

}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值