object-c中所有的数据类型都是一个对象,创建对象都需要首先使用alloc在堆空间给对象分配一块空间。这个空间大概为200个字节左右,所以使用alloc 创建对象一定要释放对象,当然现在的 xcode版本是不需要你手动释的,作为初学者不需要堆内存管理理解太深,但是你应该知道什么是内存管理,知道内存管理里面的黄金法则到底是什么。
//本篇文章针对初学者,怎么使用NSString/NSSMutableString字符串创建对象, 使用对象的方法。
一.NSString
实例化的方法
//1. 通过字符串对象实例化对象 initWithString
NSString *nsstr=@"abcd"; //*nsstr是一个字符串指针,
NSString *str=[[NSStringalloc]initWithString:nsstr];
NSLog(@"str=%@",str);
//2. 通过从c语言的字符串创建一个对象实例方法---stringWithUTF8String
char *c="abcdef";
NSString *str=[[NSStringalloc]initWithUTF8String:c];
NSLog(@"str=%@",str);
// 类方法---通过从c语言的字符串创建一个对象-NSStringstringWithUTF8String
char *c="abcdef";
NSString *str=[NSStringstringWithUTF8String:c];
NSLog(@"str=%@",str);
//3. 格式化方法创建字符串对象--stringWithFormat
int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString *str=[[NSStringalloc]initWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str%@",g);
//类方法格式化创建字符串对象---stringWithFormat
int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString *str=[NSStringstringWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str=%@",str);
//4.获取字符串的长度
NSLog(@"%lu",[str1 length]); //获取字符串对象的长度。无符号整形。
//思考.字符串对象的遍历
NSLog(@"%c",[str1 characterAtIndex:0]);
for(long i=0;i<[str1 length];i++)
{
NSLog(@"%c",[str1 characterAtIndex:i]);
}
//5.判断字符串是否相等
//返回一个BOOL类型。可以用li打印出来,相等返回1 不等返回0
NSLog(@"%i",[str1 isEqualToString:str2]);
//6.字符串的比较
NSLog(@"%li",[str1 compare:str2]);
//compare 返回三个值,-1,0,1
// NSOrderedSame; 0相等
//NSOrderedAscending; -1升序
//NSOrderedDescending; 1 降序
//7.字符串中查找字符串
NSRange rg=[str1 rangeOfString:@"a"];
//rg.length; NSNotFound 没有找到
//rg.location; 字符串所在的小标
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);
NSLog(@"是否有后缀=%i",[str3hasPrefix:@"txt"]);
//8.对象转整形 intValue
NSString *str4=@"100";
NSLog(@"对象转换为整形%i",[str4intValue]);
//9.大小写转化 uppercaseString lowercaseString
NSString *str5=@"abc";
NSString *str6=@"ABC";
NSLog(@"小写abc转大写%@",[str5 uppercaseString]);
NSLog(@"大写ABC转小写%@",[str5 lowercaseString]);
// 10.找字符串对象下表对应的元素characterAtIndex,遍历字符串使用比较多characterAtIndex
//将传入的字符串逆序
//比如输入@"abcdef"输出@"fedcba"
NSString *str7=@"abcdef";
NSLog(@"这是字符串的逆序!");
for (long i=[str7 length]-1; i>=0; i--)
{
printf("%c",[str7 characterAtIndex:i]);
}
//11.字符串中查找字符串
//返回的是一个NSrange类型。
//
//typedef struct _NSRange {
//NSUInteger location; 下标位置
// NSUInteger length; 长度
// } NSRange;
NSRange rg=[nsstr1 rangeOfString:@"a"];
//rg.length; NSNotFound 没有找到
//rg.location; 字符串所在的小标
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);
NSLog(@"location=%zilength=%zi",[nsstr1 rangeOfString:@"a"].location,[nsstr1 rangeOfString:@"a"].length);
//12.查找字符串对象是否含有后缀hasPrefix, hasSuffix
//返回bool类型
NSString *nsstr3=@"abcde.txt";
NSLog(@"是否有前缀=%i",[nsstr3hasPrefix:@"abc"]);
NSLog(@"是否有后缀=%i",[nsstr3hasSuffix:@"txt"]);
//13.字符串对象转整形 intValue
//字符串对象转浮点型floatValue
//字符串对象转双精度浮点型 doubleValue
//字符串对象转长整形longLongValue
NSString *nsstr4=@"100";
[nsstr4 doubleValue];
[nsstr4 longLongValue];
[nsstr4 floatValue];
NSLog(@"对象转换为整形%i",[nsstr4intValue]);
NSLog(@"对象转换为浮点型%f",[nsstr4floatValue]);
NSLog(@"对象转换为浮点型%lf",[nsstr4 doubleValue]);
NSLog(@"对象转换为长整形%li",[nsstr4 longLongValue]);
//14.将字符串的每个首字母转化为大写的字母capitalizedString
//返回一个字符串指针
NSString *nsstr8=@"abc defg";
NSLog(@"首字母转化为大写%@", [nsstr8 capitalizedString] );
//15.截取字符串substringFromIndex
NSString *nsstr9=@"abcdef";
//从当前位置下标开始,直到结尾.
NSLog(@"截取字符串1%@", [nsstr9 substringFromIndex:3]);
// 从头部开始,直到当前下标的前一个字符substringWithRange
NSLog(@"截取字符串2%@",[nsstr9 substringToIndex:3]);
//截取字符串范围substringWithRange
NSRange rang= NSMakeRange(1, 3);
NSLog(@"截取字符串3%@",[nsstr9 substringWithRange:rang]);
//16字符串的分割(componentsSeparatedByString)
NSString *nsstr10=@"a,b,c,d";
NSArray *array= [nsstr10 componentsSeparatedByString:@","];
//遍历数组
//[arraycount]数组的长度
for (int i=0; i<[array count]; i++) {
NSLog(@"%@",[array objectAtIndex:i]);
}
//16.(stringWithContentsOfFile)文件操作,读取磁盘txt文件
NSString *str11=[NSStringstringWithContentsOfFile:@"/Users/student/Desktop/helloworld.txt"encoding: NSUTF8StringEncoding error:nil];
NSLog(@"读取磁盘文件%@",str11);
//17.抓取网页
NSURL *url=[[NSURLalloc]initWithString:@"http://192.168.88.8/JudgeOnline-new/index.php?c=index&a=center"];
NSString *str13=[NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncodingerror:nil];
NSLog(@"抓取网页的内容%@",str13);
二.1.NSMutableString 可变字符串操作,可变字符串操作是没有返回值的。
//NSMutableString 是一个可变的字符串对象。
NSMutableString *nsstr14=[[NSMutableStringalloc] init];
nsstr14.string=@"abcdef";
[nsstr14 appendString:@" def"];
NSLog(@"str14=%@",nsstr14);
//2.删除可变字符串deleteCharactersInRange
//删除范围
[nsstr14 deleteCharactersInRange:NSMakeRange(2, 3)];
NSLog(@"删除字符串对象%@", nsstr14);
//3.stringWithCapacity 给予预留空间
NSMutableString *nsstr15=[NSMutableStringstringWithCapacity:10];
constchar *c="abc";
NSMutableString *nsstr16=[[NSMutableStringalloc]initWithCString:c encoding:NSUTF8StringEncoding];
NSLog(@"%@",nsstr6);
// NSMutableString
NSMutableString *nsstr17=[[NSMutableStringalloc]
initWithString:nsstr16];
//4.字符串的拼接stringByAppendingString
NSMutableString *nsstr18=[[NSMutableStringalloc]initWithFormat:@"%i",100];
//nsstring字符串对象的拼接.
NSString *nsstr19=@"helloworld";
NSString *nsstr20=[nsstr19 stringByAppendingString:@"nihaoa"];
NSLog(@"%@",nsstr20);
//5.字符串的替换
NSString *nsstr21=[nsstr20 stringByReplacingOccurrencesOfString:@"ell"withString:@"koo"];
NSLog(@"字符的替换%@",nsstr21);
[nsstr20 stringByReplacingOccurrencesOfString:@"el"withString:@"kk"options:NSCaseInsensitiveSearchrange: NSMakeRange(1,2)];
}