黑马程序员—Foundation框架之NSString

来源:互联网 发布:指纹充电下载软件 编辑:程序博客网 时间:2024/05/21 17:53

一、Foundation框架

1、其实也就是众多功能/API的集合

2、Foundation框架的作用:

1)Foundation框架是Mac/iOS中其他框架的基础

2)Foundation框架包含了很多开发中常用的数据类型:结构体、枚举、类

3、要想使用Foundation框架中的功能,包含它的主文件即可

4、Foundation框架提供的类:

1)NSString:字符串

2)NSArray:数组

3)NSDictionary : 字典

4)NSDate : 日期

5)NSData : 数据

6)NSNumber : 数字

二、NSString

1、什么是NSString

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

2)NSString是不可变字符串,即字符串的内容在内存中是不可变的。

3)针对此字符串的操作(如拼接,删除等),都是拷贝字符串到新的字符串中进行操作,并返回新字符串。

2、NSString的创建方式

1)最直接的方式

NSString *str = @“My name is Jiangkang!”;
2)格式化的方式

NSString *str = [NSString stringWithFormat:@"My age is %d", 10];NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
3)总结:上面两种创建字符串的区别:

1>堆、栈、常量区域。通过%p查看一下内存地址。

2>对于同一个常量字符串,只保存一份。

3>而通过stringWithFormat创建的两个相同的字符串内存中也是两个不同的堆对象。

4)从文件中读取

// 用来保存错误信息NSError *error = nil;// 读取文件内容NSString *str = [NSString stringWithContentsOfFile:@"/Users/Jiangkang/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];// 如果有错误信息if (error) {    NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);} else { // 如果没有错误信息    NSLog(@"读取成功, 文件内容是:\n%@", str);}
三、NSString中常用的方法及用法

1、NSString的大小写处理

1)- (NSString *)uppercaseString:将全部字符转为大写字母

#import <Foundation/Foundation.h>int main(){    NSString *str1 = @"hello world!";        str1 = [str1 uppercaseString];    NSLog(@"%@", str1);    // 输出:HELLO WORLD!        return 0;}
2)- (NSString *)lowercaseString:全部字符转为小写字母

#import <Foundation/Foundation.h>int main(){    // - (NSString *)lowercaseString:全部字符转为小写字母    NSString *str2 = @"HELLO WORLD!";        str2 = [str2 lowercaseString];    NSLog(@"%@", str2);    // 输出:hello world!    return 0;}
3)- (NSString *)capitalizedString:首字母变大写,其他字母都变小写。如果一个句子中有多个单词,那么会将每个单词的首字母变成大写,其余字母变成小写。

#import <Foundation/Foundation.h>int main(){    NSString *str3 = @"huGklh vYj ctCv!";    str3 = [str3 capitalizedString];    NSLog(@"%@", str3);    // 输出:Hugklh Vyj Ctcv!        return 0;}
2、NSString的比较

1)- (NSComparisonResult)compare:(NSString *)string:这个方法可以用来比较两个字符串内容的大小

2)- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask:这个方法可以增加条件

#import <Foundation/Foundation.h>int main(){    NSString *str1 = @"abc";   // a 97    NSString *str2 = @"Abc";   // A 65        NSComparisonResult result = [str1 compare:str2];        //2、比较的时候,不区分大小写,参考字符的个数    NSComparisonResult result2 = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];    //    switch (result) {        case NSOrderedAscending:            NSLog(@"str1 < str2 升序");            break;                    case NSOrderedDescending:            NSLog(@"str1 > str2 降序");            break;                    case NSOrderedSame:            NSLog(@"str1 == str2 ");            break;                    default:            break;    }        return 0;}
注意:1>比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果

2>compare方法默认的是区分大小写的

3>compare这个函数不能增加条件

4>compare: options 函数是可以增加条件的,其中条件NSCaseInsensitiveSearch是不区分大小写,NSNumericSearch是参考字符的个数

5>NSOrderedAscending:升序,NSOrderedDescending:降序,NSOrderedSame:相等

3)- (BOOL)isEqualToString:(NSString *)aString:两个字符串的内容相同就返回YES, 否则返回NO

注意:1>这个是地址的比较,返回BOOL类型结果

2> "==" 不能够判断字符串是否相等的

3>他是区分大小写的

4)- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string:忽略大小写进行比较,返回值与compare:一致

3、NSString前后缀检查及搜索

1)- (BOOL)hasPrefix:(NSString *)aString:是否以aString开头

2)- (BOOL)hasSuffix:(NSString *)aString:是否以aString结尾

int main(){    NSString *url = @"https://ios.itcast.cn";        // [str hasPrefix:@"要检测的内容"];    if([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]){                NSLog(@"是一个网址");    }else{                NSLog(@"这不是一个网址");    }        //检测字符串的后缀    NSString *imgName = @"xxxxx.doc";    // [str hasSuffix:@"带检测的后缀"]    if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){                NSLog(@"是一个图片");    }else{                NSLog(@"这不是一个图片");    }return 0;}
3)- (NSRange)rangeOfString:(NSString *)aString:用来检查字符串内容中是否包含了aString

#import <Foundation/Foundation.h>int main(){        NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd";    NSString *str2 =@"ios";    // 字符串查找    // range 结构体变量  NSRange 结构别名    NSRange range =  [str1 rangeOfString:str2];        //判断是否查找到了    if(range.location!=NSNotFound){        //range.location 表示字符串首次出现的位置        //range.length 字符串出现的长度(实质上就是子字符串的长度)        NSLog(@"%lu,%lu",range.location,range.length);    }else{                NSLog(@"在%@中没有找到这个字符串%@",str1,str2);    }    return 0;}
注意:如果查找不到,返回的信息:location 特别大的数(NSNotFound) 最大的long类型的数length 0




0 0