主要内容:
成员变量的作用域
多态
构造方法
人开枪射击子弹
创建字符串对象
//字符串整理:
//
// main.m
// 01-创建字符串对象
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
/**
理解字符串
c当中的字符串 “goodforyou”
oc?
有一个字符串对象 NSString
*/
//c的表示方法
char * cStr = "goodforYou";
//oc的字符串表示方法
NSString *ocString = @"iOS开发";
//研究oc的字符串
/**
分类:可变字符串和不可变字符串
不可变字符串:对象指针的指向可以改变,对象的内容不能变。
可变字符串:对象指针的指向可以改变,对象的内容也可以变。
*/
//介绍不可变字符串
//创建字符串
//1.创建空字符串
NSString *string1 = [[NSString alloc]init];
//2.直接创建字符串
NSString *string2 = @"good for you";
NSLog(@"%@",string2);
//3.通过对象方法创建
//通过初始化另一个字符串
NSString *string3 = [[NSString alloc]initWithString:string2];
//通过初始化c的字符串
//utf8是一种标准的编码方式
NSString *string4 = [[NSString alloc]initWithUTF8String:"good bey"];
NSLog(@"string4:%@",string4);
//通过格式化方式创建
//注意:后面的变量可以是任意数据类型
NSString *string5 = [[NSString alloc]initWithFormat:@"todaytoday%@,%i",string2,4];
NSLog(@"string5:%@",string5);
//4.通过类方法
NSString *string6 = [NSString stringWithString:string2];
NSString *string7 = [NSString stringWithFormat:@"%i,%i",3,4];
NSLog(@"%@",string7);
//拼接
//1.通过stringWithFormat:
NSString *string8 = @"iOS";
NSString *string9 = @"study";
//重新生成一个字符串对象,原来的两个对象内容不改变
NSString *string10 = [NSString stringWithFormat:@"%@%@",string9,string8];
NSLog(@"string10:%@",string10);
//2. 会将string8拼接到string9的后面
NSString *string11 = [string9 stringByAppendingString:string8];
NSLog(@"string10:%@",string11);
}
return 0;
}
其他用法:
//
// main.m
// 02-字符串的其他方法汇总
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *string1 = @"good for you";
NSString *string2 = @"good For you";
//求长度
unsigned long length = [string1 length];
NSLog(@"length:%lu",length);
//取其中的一个字符
unichar *c = [string1 characterAtIndex:3];
NSLog(@"%c",c);
//比较两个字符串是否相同
//注意:比较区分大小写
//BOOL 是一种数据类型,它只有两个值YES和NO,如果你要打印,只能打印出1和0
BOOL isSame = [string1 isEqualToString:string2];
if (isSame) {
NSLog(@"两个数相同");
}else{
NSLog(@"两个数不相同");
}
//比较两个字符串的大小
//NSOrderedAscending = -1L(升序), NSOrderedSame(相等), NSOrderedDescending(降序)
NSComparisonResult result = [string1 compare:string2];
switch (result) {
case NSOrderedAscending:
NSLog(@"string1<string2");
break;
case NSOrderedSame:
NSLog(@"string1==string2");
break;
case NSOrderedDescending:
NSLog(@"string1>string2");
break;
default:
break;
}
//不区分大小写的比较
//NSCaseInsensitiveSearch代表不区分大小写
NSComparisonResult result1 = [string1 compare:string2 options:NSCaseInsensitiveSearch];
switch (result1) {
case NSOrderedAscending:
NSLog(@"string1<string2");
break;
case NSOrderedSame:
NSLog(@"string1==string2");
break;
case NSOrderedDescending:
NSLog(@"string1>string2");
break;
default:
break;
}
//把小写大写相互转化
//转成大写字母
NSString *stringUp = [string2 uppercaseString];
NSLog(@"stringUp:%@",stringUp);
//转小写
NSString *stringLo = [string2 lowercaseString];
//字符串查找
NSString *string6 = @"good for good OK eatApple";
NSString *stirng7 = @"good";
//分析:范围:(位置,长度)
//确定方向 注意:默认是从左到右,只查找第一个子字符串
//NSRange 是一个oc的结构体,表示范围的(location,length)
//NSRect(位置) NSPoint(平面的坐标) NSSize(大小)
NSRange range = [string6 rangeOfString:stirng7];
//一种根据location
//NSNotFound 说明没有找到位置信息
if (range.location != NSNotFound) {
NSLog(@"%i",range.location);
}
//一种根据length
if (range.length != 0) {
NSLog(@"%i",range.location);
}
//判断前后缀
BOOL isPre = [string6 hasPrefix:@"g"];
BOOL isSuf = [string6 hasSuffix:@"o"];
//字符串转化为数字
//注意:字符串必须是数字字符串
NSString *string8 = @"4";
int myInt = [string8 intValue];
NSLog(@"%i",myInt);
//字符串提取
NSString *string10 = @"good for good OK eatApple";
//1.从0开始到指定位置,不包括结束位置
NSString *subString1 = [string10 substringToIndex:4];
NSLog(@"subString1:%@",subString1);
//2.从指定位置开始到结尾 包括起始位置
NSString *subString2 = [string10 substringFromIndex:10];
NSLog(@"subString2:%@",subString2);
//3.根据范围取值
//NSRange的赋值:1.{2,4} 2.NSMakeRange(3,6)
NSString *subString3 = [string10 substringWithRange:NSMakeRange(4, 3)];
NSLog(@"subString3:%@",subString3);
}
return 0;
}