框架:由许多类,方法,函数和文档按照一定逻辑组织起来的集合
不小心修改了系统的文件,引起的错误
#import<Foundation/Foundation.h>
int main(intargc,const char* argv[]) {
@autoreleasepool {
NSString *str1 = @"abc";
NSString *str2 = @"Abc";
NSString *str4 = @"Abc";
NSString *str3 = [NSString stringWithFormat:@"abc"];
//str3在堆区,而str1,str2在常量区
//所以 ==不能判断字符串是否相等
//不是类变量前不用加 *
//NSComparisonResult 是一个枚举类型
//compare 默认区分大小写
//NSComparisonResultresult =[str1 compare:str2 ];
//如果要区分大小写
NSComparisonResultresult =[str1 compare:str2options:NSCaseInsensitiveSearch|NSNumericSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"str1 < str2升序");
break;
case NSOrderedDescending:
NSLog(@"str1 > str2降序");
break;
case NSOrderedSame:
NSLog(@"str1 == str2相等");
break;
default:
break;
}
//常量字符串,在常量区只有一份,地址一定是一样的
if(str2 == str4){
NSLog(@"相等");
}
else{
NSLog(@"不相等");
}
//isEqualToString区分大小写的
if( [str2 isEqualToString:str4]){
NSLog(@"相等");
}
else{
NSLog(@"不相等");
}
}
return 0;
}
位枚举
常用的三个函数
#import<Foundation/Foundation.h>
//检测字符串的前缀和后缀
void qianzhuihouzhui( )
{
NSString *url = @"http://www.baidu.com";
if ([url hasPrefix:@"https://"]|[urlhasPrefix:@"http://"]){
NSLog(@"http或者https协议网站");
}
else
{
NSLog(@"不是一个http协议网址");
}
if( [url hasSuffix:@".com"]){
NSLog(@".com结尾网站");
}
else{
NSLog(@"不是.com结尾网站");
}
}
int main(intargc,const char* argv[]) {
@autoreleasepool {
//字符串的查找某个字符串在另一个字符串首次出现的位置
NSString*str1 =@"sdsaiosaaaiosbbbb";//字符串中有两个ios
NSString *str2 = @"ioss";
NSRange range = [str1 rangeOfString:str2];
//range.length 字符串的长度
//range.location 字符串首次出现的位置如果查找不到会返回一个特别大的数字
if (range.location!=NSNotFound) {
NSLog(@"%lu,%lu",range.length,range.location);
}
else{
NSLog(@"没有在%@中查找到%@",str1,str2);
}
}
return 0;
}
NSRange是一个结构体变量
#import<Foundation/Foundation.h>
int main(intargc,const char* argv[]) {
@autoreleasepool {
NSRange range ;//结构体变量
NSRange *r ;//结构体指针
//第一种赋值方法
range.location = 3 ;
range.length = 3 ;
//结构体整体变量赋值
range = (NSRange){3,3};
//3)
NSRange r3 = {.location = 3};//此时length没有赋初始值
//4) oc新增
NSRange r4 = NSMakeRange(3,3);
//loca, len
//查看结构体变量值
NSLog(@"%ld,%ld",r4.location,r4.length);
NSString *str = NSStringFromRange(r4);
NSLog(@"%@",str);
//{3, 3}
r->length = 3;
r->location = 3;
//NSLog(@"%ld,%ld",r->location,r->length);
}
return 0;
}
//
// main.m
// NSString字符串的截取
//
// Created by CHINGWEI_MACPC on 15/12/16.
// Copyright © 2015年 itcast. All rights reserved.
//
#import<Foundation/Foundation.h>
void test(){
NSString *url = @"http://www.baidu.com";
NSString *url1 = [url substringFromIndex:5];
NSLog(@"url1 =%@",url1);
// //www.baidu.com
NSString *str2 = [url substringToIndex:5];
NSLog(@"str2 =%@",str2);
//http:
NSRange r1 = {7,13};
NSString *str3 = [url substringWithRange:r1];
NSLog(@"str3 =%@",str3);
//www.baidu.com
}
void test2()
{
NSString *str =@"<itcast>黑马程序员</itcast>";
NSUInteger loc = [str rangeOfString:@">"].location +1 ;
NSUInteger len = [str rangeOfString:@"</"].location - loc ;
NSRange r2 = {loc,len};
NSString *subStr = [str substringWithRange:r2];
NSLog(@"%@",subStr);
}
int main(intargc,const char* argv[]) {
@autoreleasepool {
//字符串替换
NSString *str = @"dsdsaaasds aasd saaa ";
NSString *str2 = [str stringByReplacingOccurrencesOfString:@"a"withString:@"*"];
NSLog(@"替换后的字符串为:%@",str2);
NSRange r2 = {0,1};
NSString *str3 = [str stringByReplacingCharactersInRange:r2withString:@""];
NSUInteger len = [str3 length];
NSRange r3 = {len-1,1};
str3 = [str3 stringByReplacingCharactersInRange:r3 withString:@""];
NSLog(@"str3去掉空格后为 \"%@\"",str3);
//替换后的字符串为:dsds***sds**sds***
NSString *s1 =@"dsdsaaasds aasd saaa ";
str3 = [s1 stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];
NSLog(@"老师方法去掉收尾空格后 \"%@\"",str3);
}
return 0;
}
void test(){
NSString *str1 = @"150";
NSString *str2 = @"100";
//强制类型转换
int num1 = [str1 intValue];
int num2 = [str2 intValue];
int minus = num1 - num2 ;
}
int main(intargc,const char* argv[]) {
@autoreleasepool {
//oc和 c语言字符串互换
//1)c -->oc 对象
char *s = "zs";
NSString *str = [NSString stringWithUTF8String:s];
NSLog(@"%@",str);
//2oc--->c
NSString *str2 = @"zbz";
///Users/chingwei_macpc/Documents/Foundation框架/字符串和其他数据类型转换/main.m:34:17:Initializing 'char *' with an expression of type 'const char * _Nullable'discards qualifiers
const char*s1 = [str2 UTF8String] ;
printf("%s\n",s1);
}
return 0;
}
#import<Foundation/Foundation.h>
int main(intargc,const char* argv[]) {
@autoreleasepool {
//int a a 是存在栈区
NSString*str2=@"jack";//NSString 是在常量区不可变
NSLog(@"str2=%p",str2 );
//str2=0x100001048
str2=@"rose";//NSString 是在常量区不可变
NSLog(@"str2=%p",str2 );
//str2=0x100001088
//同一个变量地址不一样常量一样就存在一个内存区
//字符串所占的空间和字符串都不能改变
//[NSMutableString stringWithFormat:@"jack"]存入堆区
//字符串在内存占用的空间是不固定,并且存储内容可以被修改
NSMutableString *str1 = [NSMutableStringstringWithFormat:@"jack"];
NSLog(@"str1=%p",str1);
//str1=0x100204290
[str1 appendFormat:@"rose"];//格式化添加
NSLog(@"%@=%p",str1,str1);
//str1=0x100204290
NSMutableString *s2 =[NSMutableString string];
NSString *s3=@"itcast";
for (inti = 0; i<10; i++) {
[s2 appendString:s3];
}
NSLog(@"%@",s2);
}
return 0;
}
#import<Foundation/Foundation.h>
int main(intargc,const char* argv[]) {
@autoreleasepool {
//append格式化添加字符串
NSMutableString *str = [NSMutableStringstring];
[str appendFormat:@"http://www.baidu.com"];
NSLog(@"%@",str);
//因为是可变的不需要void返回值
//删除字符串的某一个范围
[str deleteCharactersInRange:NSMakeRange(5, 2)];
NSLog(@"%@",str);
//http:www.baidu.com
//插入一个字符串
[str insertString:@"\\\\" atIndex:5];
NSLog(@"%@",str);
//替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(11, 5)withString:@"itcast"];
NSLog(@"%@",str);
//http:\\www.itcast.com
//易犯错误
//1)@"sd"是NSString
NSMutableString *test = @"sd";
///Users/chingwei_macpc/Documents/Foundation框架/NSMutableString常用方法/main.m:37:26: Incompatible pointertypes initializing 'NSMutableString *' with an expression of type 'NSString *'
NSLog(@"%@",test);
//[test appendFormat:@"asd"];
//给常量值赋值报错
//2).
NSMutableString *test1 =[NSMutableStringstring];
str.string =@"";//用空覆盖
[str appendFormat:@"xxxxxx"];
NSLog(@"%@",test1);
//输出为空
//3).到底用NSMutableString还是NSString
//特殊处理的时候字符串拼接,替换等才用到NSMUtableString
}
return 0;
}
位枚举
NSArray
OC中数组类,C语言只能存放一种类型数据,不能很方便的动态添加数组元素,不能方便动态的删除数组元素(长度固定)
NSArray只能存放任意oc对象,并且顺序的,不能存储非oc对象
比如int/float/double/char/enum/struct
一旦初始化完毕,它里面的内容永远固定的
#import<Foundation/Foundation.h>
int main(intargc,const char* argv[]) {
@autoreleasepool {
//创建一个空数组
NSArray *arr1 =[NSArray array];
//创建一个数组,只有元素;
NSArray * arr2 =[NSArray arrayWithObject:@"1"];
//创建数组,有多个元素常见写法
NSArray *arr3 = [NSArray arrayWithObjects:@"1",@"2",@"3",@4,nil];
//调用对象方法创建数组 nil表示赋值结束,但不存储nil
NSArray *arr4 = [[NSArray alloc] initWithObjects:@"1",[NSNullnull],@"2",@"3",nil];
//用一个数组可以创建另外一个数组
NSArray *arr5 = [NSArray arrayWithArray:arr3];
}
return 0;
}
NSArray常见用法
void test(){
NSArray *arr =[NSArray arrayWithObjects:@"1",@"2",@"3",nil];
//获得数组长度
NSLog(@"%ld",arr.count);//3
//获取下标对应的对象
NSLog(@"%@",[arr objectAtIndex:2]);
//返回元素下标
NSUInteger loc = [arr indexOfObject:@"2"];
NSLog(@"%ld",loc);