/**
* 一:字符串NSString
*/
//1.字符串的创建
//说明:NSString是不可变字符串
//(1)常量字符串
NSString *str1=@"字符串常量";
NSLog(@"%@",str1);
//(2)格式化字符转,把其他类型转换成OC字符串
int grade=100;
NSString *str2=[NSString stringWithFormat:@"My grade is %d",grade]; //很重要,必须会
NSLog(@"str2=%@",str2);
//根据其他对象创建字符串
NSString *str3=[NSString stringWithFormat:@"%@AAA",str1];
NSLog(@"str3=%@",str3);
//(3)把C语言的字符串,转换为OC字符串
//@(基本类型),可以把基本类型转换为OC的对象类型
char *cstr=" i am a c sring";
NSString *str4=@(cstr);
NSString *str5=[NSString stringWithUTF8String:cstr];
NSLog(@"%@%@",str4,str5);
//(4) 使用便利构造器
NSString *str6=[[NSString alloc]initWithUTF8String:cstr];
//2.字符串比较
//(1),相等比较
NSString *str7=@"abc";
NSString *str8=[NSString stringWithUTF8String:"abc"];
NSString *str9 = [NSString stringWithString:str7];
if (str7 == str9) { //对于字面量字符串系统不会重复创建对象,只会让该指针直接指向该对象
NSLog(@"xiangtong");
}
NSLog(@"str7的内存地址:%p,str9的内存地址:%p",str7,str9);
if (str7==str8) //等号为恒等,判断是否是同一个对象,而不是对象中的内容(内存地址不等!)
{
NSLog(@"str8与str7相等");
}
else
{
NSLog(@"str7与str8不等!");
}
if ([str7 isEqualToString: str8]) { //isEqualToString: 是比较字符串的内容相等
NSLog(@"str8与str7相等");
}
else
{
NSLog(@"str7与str8不等!");
}
//3.空串和空nil
//nil空指针,不指向任何对象
NSString *str11=@"";
NSString *str12;
if (str12==nil)
{
NSLog(@"str12是空的");
}
if ([str11 isEqualToString:@""])
{
NSLog(@"str11是空串");
}
// 4.字符串大小比较 : 一位一位的从头开始比
// @"999"与 @"95231"
NSString *str13=@"998";
NSString *str14=@"95231";
// NSOrderedAscending:升序,前面的比后面的小
if ([str13 compare:str14]==NSOrderedAscending) //-1
{
NSLog(@"str13>str14");
}
//NSOrderedDescending:降序,前面的比后面的大
else if ([str13 compare:str14]==NSOrderedDescending) //1
{
NSLog(@"str13比str14大");
}
else
{
NSLog(@"str13比str14相等");
}
//5.字符串的追加
//NSString不可变字符
//stringByAppendingString 直接在后面追加字符
NSString *str15=@"abc";
NSLog(@"%@",str15);
str15 =[str15 stringByAppendingString:@"def"];
NSLog(@"追加之后的字符串%@",str15);
//6.获取字符串的某一字符
//characterAtIndex :位置
char ch =[str15 characterAtIndex:5];
NSLog(@"ch=%c",ch);
//7.字符串的截取
NSString *str16=@"abcdefgh";
//从某个索引开始截取字符串,直到末尾
NSString *str17=[str16 substringFromIndex:2];
NSLog(@"str17=%@",str17);
//从第一个字符开始截取,不包括最后一位
NSString *str18=[str16 substringToIndex:3];
NSLog(@"str18=%@",str18);
//截取一定范围的字符串
//NSRange:结构体,location从哪里开始,length截取的位数
//NSMakeRange(0, 4)构造一个结构体变量
NSString *str19=[str16 substringWithRange:NSMakeRange(0, 4)];
NSLog(@"str19=%@",str19);
//取字符串中每一个字符
for ( int i=0;i<[ str16 length];i++)
{
NSLog(@"%c",[str16 characterAtIndex:i])
}
// 7. 字符串的大小写转换
NSString *str101=@"AbCDeF";
NSString *str102=[str101 lowercaseString];
NSLog(@"字符串转化为小写:%@",str102);
NSString *str103=[str101 uppercaseString];
NSLog(@"字符串转化为小写:%@",str103);
//8.字符串的前后缀判断
NSString *str104=@"www.baidu.com";
//判断前缀
BOOL hasPreFix=[str104 hasPrefix:@"www."];
if (hasPreFix) {
NSLog(@"符合对应前缀要求");
}
else {
NSLog(@"不符合对应前缀要求");
}
BOOL hasSufFix=[str104 hasSuffix:@".com"];
if (hasSufFix) {
NSLog(@"符合对应后缀要求");
}
else{
NSLog(@"不符合对应后缀要求");
}
//9.字符串分割
// @"name=yang&sex=m&tel=1770&color=yellow"
//遇到componentsSeparatedByString:就分割
NSString *url =@"name=yang&sex=m&tel=1770&color=yellow";
NSArray *components =[url componentsSeparatedByString:@"&"];
NSLog(@"components=%@",components);
//方法(1).快速枚举 重点1
//缺点,没有数组的索引
//从数组中每次取一个放入到str变量中
for (NSString *str in components)
{ //此代码会执行数组个次数
NSLog(@"%@",str);
}
//遍历数组
// 方法(2). 遍历数组:利用数组的count个数 (依人)
for (int i=0; i<components.count; i++)
{
//取出数组的每一个组件,例如:name=yang
NSString *com=components[i];
NSArray *newArr =[com componentsSeparatedByString:@"="];
NSString *key=newArr[0];
NSString *value =newArr[1];
NSLog(@"%@:%@",key,value);
}
//10.字符串的替换
NSString *str20=@"abcd efg gh";
//把一系列的某种字符串用其他字符替换
//用空串把字符串中的所有的空格替换
NSLog(@"str20=%@",str20);
NSString *str21=[str20 stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"去掉空格后的字符串是%@",str21);
NSString *str22=@"scf*asdcv*vdsdg";
NSLog(@"str22=%@",str22);
NSString *str23=[str22 stringByReplacingOccurrencesOfString:@"*" withString:@""];
NSLog(@"str23=%@",str23);
//11. 读取网络/本地文件
NSString *str105=@"www.baidu.com";
//网络路径
NSURL *httpUrl=[NSURL URLWithString:str105];
//本地路径
NSURL *fileUrl=[NSURL fileURLWithPath:str105];
//读取网络文件
NSString *httpStr=[NSString stringWithContentsOfFile:httpUrl encoding:NSUTF8StringEncoding error:nil];
NSLog(@"httpStr=%@",httpStr);
NSString *fileStr=[NSString stringWithContentsOfFile:@"/Users/Dew/Desktop/test.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"fileStr=%@",fileStr);
//写入文件
NSString *str106=@"hello OC";
BOOL isOk =[str106 writeToFile:@"/Users/Dew/Desktop/test.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (isOk) {
NSLog(@"文件写入成功");
}
else
{
NSLog(@"文件写入失败");
}
/**
* 二:可变字符串NSmutableString
*/
// NSMutableString 是NSString的子类
// NSString 的方法对他依然试用
//1.可变字符串的添加
// 调用append方法后不产生新的对象
// 直接在原对象上追加
// 应用场景:拼接参数
NSMutableString *mstr=[NSMutableString stringWithString:@"开始"];
//字符串追加的第一种方式,直接追加一个普通字符串
[mstr appendString:@"abcde"];
[mstr appendString:@"fghijk"];
//追加格式化字符串
int grade2=99;
[mstr appendFormat:@"grade=%d",grade2];
NSLog(@"%@",mstr);
//2.可变字符串的替换
NSString *str20=@"abcd efg gh";
//把一系列的某种字符串用其他字符替换
//用空串把字符串中的所有的空格替换
NSLog(@"str20=%@",str20);
NSString *str21=[str20 stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"去掉空格后的字符串是%@",str21);
NSString *str22=@"scf*asdcv*vdsdg";
NSLog(@"str22=%@",str22);
NSString *str23=[str22 stringByReplacingOccurrencesOfString:@"*" withString:@""];
NSLog(@"str23=%@",str23);
//3.可变字符串的删除
// deleteCharactersInRange:NSMakeRange(5, 5) 从哪里开始删除多少个字符
NSMutableString *str24=[NSMutableStringstringWithString:@"hello love world!"];
[str24 deleteCharactersInRange:NSMakeRange(5,5)];
NSLog(@"str24=%@",str24);
//4.可变字符串的插入
NSMutableString *str25=[NSMutableStringstringWithString:@"1111 2 1 2 aaa !"];
[str25 insertString:@"sing nice"atIndex:6];
NSLog(@"%@",str25);