黑马程序员--OC之Foundation框架的使用
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1、字符串比较函数
1)比较字符串大小
字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符串的大小的话,可以使用compare方法。
compare 方法返回的结果有三种:NSOrderedAscending,NSOrderedSame,NSOrderedDescending,
str > str2 NSOrderedDescending 1 b a
str < str2 NSOrderedAscending -1 a<b
str == str2 NSOrderedSame 0
另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件
2)比较字符串大小,指定条件
如果要忽略大小写的话,可以在options 里面加一个参数NSCaseInsensitiveSearch;具体如下
NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];
常见的有3个
NSCaseInsensitiveSearch:不区分大小写字符。
NSLiteralSearch:进行完全比较,区分大小写。(默认)
NSNumericSearch:比较字符串的字符个数,而不是字符值。
#import <Foundation/Foundation.h>
int main ()
{
NSString *str1 = @"abc";
NSString *str2 = @"Abc";
int a= [str1 compare:str2 options:NSCaseInsensitiveSearch];
if (a==1) {
NSLog(@"str1>str2 降序");
}else if (a==0)NSLog(@"str1==str2");
else NSLog(@"str1<str2 升序");
return 0;
}
常见的有3个
NSCaseInsensitiveSearch:不区分大小写字符。
NSLiteralSearch:进行完全比较,区分大小写。(默认)
NSNumericSearch:比较字符串的字符个数,而不是字符值。
3)判断字符串是否相等
-(BOOL) isEqualToString: (NSString *) aString;
比较接收方和当作参数传递来的字符串
返回BOOL(YES或NO)型数据
表示两个字符串的内容是否相同,注意区分大小写
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"abc";//存放在常量区
NSString *str2 = @"Abc";
NSString *str3 = [NSString stringWithFormat:@"abc"];//存放在堆区
if ([str1 isEqualToString: str3])//表示判断地址存放的值是否相同
{
NSLog(@"str1=str3");
}
else NSLog(@"str1!=str3");
return 0;
}
}
2、NSString前后缀检查及搜索
1)NSString前后缀检查
检查字符串是否以另一个字符串开头
-(BOOL) hasPrefix: (NSString *) aString;
2)判断字符串后缀
判断字符串是否以另一个字符串结尾
-(BOOL) hasSuffix: (NSString *) aString;
#import <Foundation/Foundation.h>
//检查字符串的前后缀
int main(){
NSString *url = @"https://htjs.net";//如何检查这个字符串是一个网址
//需要检查这个字符串是否以http://或者https://开头
//[url hasPrefix:@"http://"]
if ([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]) {
NSLog(@"这是一个网址");
}else NSLog(@"这不是一个网址");
//检查字符串的后缀
NSString *imgName = @"wn.jpg";
if ([imgName hasSuffix:@".jpg"]) {
NSLog(@"这是一个图片");
}else NSLog(@"这不是一个图片");
return 0;
}
2)字符串查找
-(NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含, 就返回aString在字符串中第一次出现的范围
反方向搜索:
// 从后向前搜索,遇到第一次出现的位置,则结束
[str rangeOfString: @"str" options: NSBackwardsSearch];
typedefstruct_NSRange {
NSUIntegerlocation; //位置
NSUIntegerlength; //长度
} NSRange;
//字符串的查找,查找某个字符串在另外一个 字符串中首次出现的位置
//A rangOfString B 在A中查找B出现的位置
//搜索字符串
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//0123456789
NSString *str1 = @"abcdefjhiosjklmniospqrst";
NSString *str2 = @"ios";
NSRange range = [str1 rangeOfString:str2];
//range.location表示字符串首次出现的位置
//range.length表示字符串的长度
//如果查找到了,返回B出现的位置和长度
//如果查找不到,位置返回为很大的数字(NSNotFound最大的long类型的数), 长度返回为0
if (range.location !=NSNotFound) {
NSLog(@"查找到了,位置如下\n");
NSLog(@"位置为:%lu,长度为:%lu",range.location,range.length);
}else
NSLog(@"没有找到字符串");
}
return 0;
}
3)NSRange使用
1)NSRange的使用
NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
检查字符串是否以另一个字符串开头
-(BOOL) hasPrefix: (NSString *) aString;
2)判断字符串后缀
判断字符串是否以另一个字符串结尾
-(BOOL) hasSuffix: (NSString *) aString;
#import <Foundation/Foundation.h>
//检查字符串的前后缀
int main(){
NSString *url = @"https://htjs.net";//如何检查这个字符串是一个网址
//需要检查这个字符串是否以http://或者https://开头
//[url hasPrefix:@"http://"]
if ([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]) {
NSLog(@"这是一个网址");
}else NSLog(@"这不是一个网址");
//检查字符串的后缀
NSString *imgName = @"wn.jpg";
if ([imgName hasSuffix:@".jpg"]) {
NSLog(@"这是一个图片");
}else NSLog(@"这不是一个图片");
return 0;
}
2)字符串查找
-(NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含, 就返回aString在字符串中第一次出现的范围
反方向搜索:
// 从后向前搜索,遇到第一次出现的位置,则结束
[str rangeOfString: @"str" options: NSBackwardsSearch];
typedefstruct_NSRange {
NSUIntegerlocation; //位置
NSUIntegerlength; //长度
} NSRange;
//字符串的查找,查找某个字符串在另外一个 字符串中首次出现的位置
//A rangOfString B 在A中查找B出现的位置
//搜索字符串
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//0123456789
NSString *str1 = @"abcdefjhiosjklmniospqrst";
NSString *str2 = @"ios";
NSRange range = [str1 rangeOfString:str2];
//range.location表示字符串首次出现的位置
//range.length表示字符串的长度
//如果查找到了,返回B出现的位置和长度
//如果查找不到,位置返回为很大的数字(NSNotFound最大的long类型的数), 长度返回为0
if (range.location !=NSNotFound) {
NSLog(@"查找到了,位置如下\n");
NSLog(@"位置为:%lu,长度为:%lu",range.location,range.length);
}else
NSLog(@"没有找到字符串");
}
return 0;
}
3)NSRange使用
1)NSRange的使用
NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
// NSUInteger的定义
typedef unsigned int NSInteger;
typedef unsigned long NSUInteger;
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员
NSUInteger location : 表示该范围的起始位置
NSUInteger length : 表示该范围内的长度
比如@“I love iOS”中的@“iOS”可以用location为7,length为3的范围来表示
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));
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSRange range;//range是结构体变量
NSRange *r;//r结构体指针
//range变量的初始化方式
//1.通过结构体变量访问成员
range.location = 3;
range.length = 2;
//2.结构体变量的整体赋值
range = (NSRange){4,2};
NSRange r1 = {3,2};//r1,r2常用
NSRange r2 = {.location = 3};//只给结构体变量中的.location成员赋值
NSRange r3 = NSMakeRange(3, 2);// NSMakeRange函数给结构题变量整体赋值
NSLog(@"%ld,%ld",r3.location,r3.length);
//可以把结构体变量转换为NSString类型
NSLog(@"%@",NSStringFromRange(r3));
}
return 0;
}
4、字符串的截取和替换
1)字符串的截取
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
#import <Foundation/Foundation.h>
//字符串的截取
int main test(){
NSString *str=@"http://htjs.net";
//从x位置开始直到最后结束,包含起始位置
NSString *str1 = [str substringFromIndex:5];
NSLog(@"str1=%@",str1);
//从字符串开头开始,到x位置结束,不包括x的位置
NSString *str2 = [str substringToIndex:5];
NSLog(@"str2=%@",str2);
//截取一个范围,range
NSRange r1 = {3,4};
NSString *str3 = [str substringWithRange:r1];
NSLog(@"str1=%@",str3);
return 0;
}
2)字符串的替换
-(NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替换target
//字符串替换
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str=@"<itcast>传智博客</itcast>";
//str stringByReplacingCharactersInRange:@"源字符串中的内容" withString:@“要替换的字符串”
NSString *newstr= [str stringByReplacingOccurrencesOfString:@"传智博客"withString:@"黑马"];
NSLog(@"替换的字符串为:%@",newstr);
}
return 0;
}
5、NSString的其他用法
1)获取字符串的每个字符
-(NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
-(unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
2)字符串和其他数据类型的转换
字符串转为基本数据类型
-(double)doubleValue;
-(float)floatValue;
-(int)intValue;
以后可能会用到别人的框架,都是纯C语言的,所以可能会用到把OC字符串转换为C语言的字符串。
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
练习:去除头、尾的所有大写字母、小写字母、*号。
+ (id)whitespaceCharacterSet; //去掉头尾空格
+ (id)lowercaseLetterCharacterSet; // 去掉头尾的小写字母
+ (id)uppercaseLetterCharacterSet; //去掉头尾的大写字母
+ (id)characterSetWithCharactersInString:(NSString *)aString; // 去掉头尾的指定字符串
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 字符串转化为数值
NSString *str =@"1";
NSString *str1 = @"3.14";
int a = 10;
int b = [str intValue];
a = a+b;
float f1 = [str1 floatValue];
f1 = a + f1;
NSLog(@"a的值为:%d",a);
NSLog(@"f1的值为:%.2f",f1);
}
return 0;
}
typedef unsigned int NSInteger;
typedef unsigned long NSUInteger;
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员
NSUInteger location : 表示该范围的起始位置
NSUInteger length : 表示该范围内的长度
比如@“I love iOS”中的@“iOS”可以用location为7,length为3的范围来表示
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));
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSRange range;//range是结构体变量
NSRange *r;//r结构体指针
//range变量的初始化方式
//1.通过结构体变量访问成员
range.location = 3;
range.length = 2;
//2.结构体变量的整体赋值
range = (NSRange){4,2};
NSRange r1 = {3,2};//r1,r2常用
NSRange r2 = {.location = 3};//只给结构体变量中的.location成员赋值
NSRange r3 = NSMakeRange(3, 2);// NSMakeRange函数给结构题变量整体赋值
NSLog(@"%ld,%ld",r3.location,r3.length);
//可以把结构体变量转换为NSString类型
NSLog(@"%@",NSStringFromRange(r3));
}
return 0;
}
4、字符串的截取和替换
1)字符串的截取
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
#import <Foundation/Foundation.h>
//字符串的截取
int main test(){
NSString *str=@"http://htjs.net";
//从x位置开始直到最后结束,包含起始位置
NSString *str1 = [str substringFromIndex:5];
NSLog(@"str1=%@",str1);
//从字符串开头开始,到x位置结束,不包括x的位置
NSString *str2 = [str substringToIndex:5];
NSLog(@"str2=%@",str2);
//截取一个范围,range
NSRange r1 = {3,4};
NSString *str3 = [str substringWithRange:r1];
NSLog(@"str1=%@",str3);
return 0;
}
2)字符串的替换
-(NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替换target
//字符串替换
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str=@"<itcast>传智博客</itcast>";
//str stringByReplacingCharactersInRange:@"源字符串中的内容" withString:@“要替换的字符串”
NSString *newstr= [str stringByReplacingOccurrencesOfString:@"传智博客"withString:@"黑马"];
NSLog(@"替换的字符串为:%@",newstr);
}
return 0;
}
5、NSString的其他用法
1)获取字符串的每个字符
-(NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
-(unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
2)字符串和其他数据类型的转换
字符串转为基本数据类型
-(double)doubleValue;
-(float)floatValue;
-(int)intValue;
以后可能会用到别人的框架,都是纯C语言的,所以可能会用到把OC字符串转换为C语言的字符串。
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
练习:去除头、尾的所有大写字母、小写字母、*号。
+ (id)whitespaceCharacterSet; //去掉头尾空格
+ (id)lowercaseLetterCharacterSet; // 去掉头尾的小写字母
+ (id)uppercaseLetterCharacterSet; //去掉头尾的大写字母
+ (id)characterSetWithCharactersInString:(NSString *)aString; // 去掉头尾的指定字符串
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 字符串转化为数值
NSString *str =@"1";
NSString *str1 = @"3.14";
int a = 10;
int b = [str intValue];
a = a+b;
float f1 = [str1 floatValue];
f1 = a + f1;
NSLog(@"a的值为:%d",a);
NSLog(@"f1的值为:%.2f",f1);
}
return 0;
}