字符串(NSString)

/*

NSString(不可变)  && NSMutableString(可变)

1.创建字符串

2,字符串拼接,截取,比较计算长度,替换,前缀后缀,OC对象类型和C语言字符串类型的转化

*/

************************ 一,创建字符串 ****************************

  //1,最简单的创建方式

NSString * str1 = @"hello world";//str1 指向常量区

str1 = @"哈哈"; //str 重指向


//2,废柴写法

NSString *str2 = [[NSString alloc]initWithString:@"you are beautiful"];

注意:str2 虽然alloc了但是仍然指向常量区


//3.最牛逼,最正统的写法

NSString *str3 = [[NSString alloc]initWithFormat:@"%@",str1];//实例化方法

NSS *str4 = [NSString stringWithFormat:@"你好"];//类方法

// str3 str4 都是指向堆区空间,format 方法的使用可以参考NSlog



**********************二, 字符串长度***************************

//length :计算字符串长度,返回值是NSIngter

NSString *str5 = @"hgcd2324joijb";

NSSIngter  len = [str5 length];

NSLog(@"len = %lu",len);


***********************三,前缀,后缀***********************

NSString *str6= [NSString stringWithFormat:@"http://www.baidu.com"];

//判断此字符串是否连接的规则

//关键字1  prefix  判断前缀 返回值为bool类型

Bool  isPrefix = [str6 hasPrefix:@"http"];

NSLog(@"isPrefix = %d",isPrefix);

//关键字2 suffix 判断后缀返回值为bool

BOOL issuffix = [str6 hasSuffix:".cn"];

NSLog(isPrefix && isSuffix ?@"此链接是正确的":@"此链接不正确");



*********************四,查找字符串的范围************************

NSString *str7 = [[NSString alloc]initWithFormat:@"you are beautiful"];

//判断str7 中是否含有are这个字符串?????

//新的数据类型:NSRange结构体类型(俩个成员变量),location:字符串开始的位置 length:字符串的长度

NSRange rang = [str7 rangeOfString:@"are"];

NSLog("子串的起始位置location = %lu,子串的长度length = %lu",rang.location,rang.length);

//一旦子串不存在母串中,输出location就会输出随机值

NSLog(range.length == 0 ? @"查找成功" : @"查找失败");



********************五,获取字符串*********************

//有三种方法     关键字sub  to  from

NSString *str8 = @"nizhenbang";

//1,给定字符串开始位置,截取到最后一个字符

NSString *subStr1 = [str8 substringFromIndex:6];

NSLog(@"subStr1 = %@",subStr1);


//2.关键字 to 给定子串的结束位置,从第一个开始截取,到指定位置的前一个字符结束(不包含指定位置上的字符)

NSString *substr2 = [str8 substringToIndex:6];

NSLog(@"subStr2 = %@",substr2);


//3.关键字 range 从任意位置截取任意长度的字符串

//先创建range变量,指定要截取的范围

NSRange range1 = [str8 rangeOfString:@"zhen"];

NSString *subStr3 = [str8 substringWithRange:range1];

NSLog(@"subStr3 = %@",subStr3);

//第二种方式,不提前设置range变量  NSMakeRange用来设置range变量(注意非对象类型的不要带*)

NSString *subStr4 = [str8 substringWithRange:NSMakeRange(3, 4)];



*********************六字符串拼接***************************

//关键字 APPending

NSString *str9 = [NSString stringWithFormat:@"HaoRan"];

//在str9后拼接 is a handsome boy

NSString * newStr = [str9 stringByAppendingString:@"is handsome boy"];

NSLog(@"new = %@",newStr);

NSLog(@"str9 = %@",str9);



***********************七字符串替换****************************

NSString *s1 = [NSString stringWithFormat:@"hello hello hi hi"];


//1.用哪个指定字符串替换指定内容,比如将hello替换成haha

NSString *newStr1 = [s1 stringByReplacingOccurrencesOfString:@"hello" withString:@"haha"];

NSLog(@"newStr1 = %@",newStr1);


//2.指定替换长度,比如讲第一个hi改成yes

NSString *newStr2 = [s1 stringByReplacingCharactersInRange:NSMakeRange(15, 2) withString:@"yes"];

NSLog(@"newStr2 = %@",newStr2);


****************8字符串的大小写转换**********************

NSString *s2 = [NSString stringWithFormat:@"i love you"];

//1.全部大写

NSString *upperStr = [s2 uppercaseString];

NSLog(@"%@",upperStr);


//2,全部小写

NSString *lowerStr = [upperStr lowercaseString];

NSLog(@"%@",lowerStr);


//首字母大写

NSString *capitalStr = [lowerStr capitalizedString];

NSLog(@"%@",capitalStr);



***************************字符串比较************************

NSString *s3 = @"aa";

NSString *s4 = @"bb";

//比较关键字:compare

NSComparisonResult result = [s3 compare:s4];

/NSComparisonResult  本质就是NSInteger整形数据,被定义出来只是为了接受对象的比较结果,结果有三种类型-1(升序,前小后大) 0 (值相等) 1(降序 前大后小)

NSLog(@"比较结果:%ld",result);


**********字符串,数值转换*********************

int a = 80;

//基本类型 --> 字符串对象类型

NSString *s6 = @"110";

//1. C语言字符串

const char *str = [s6 UTF8String];

//C语言中所有数值类型都可转换

float num1 = [s6 floatValue];

int num2 = [s6 intValue];

double num3 = [s6 doubleValue];


****************************************************************

//NSString的子类NSMutableString

//可变字符串:NSMutableString,对可变字符串做增删改操作,就会对可辨字符串直接进行操作

NSMutableString *mStr1 = [NSMutableString stringWithFormat:@"hello"];

//1,拼接字符串

[mStr1 appendFormat:@"world"];

NSLog(@"mStr1 = %@",mStr1);

//2.删除

[mStr1 deleteCharactersInRange:[mStr1 rangeOfString:@"world"]];

//3.插入字符串

[mStr1 insertString:@"girl" atIndex:5];

NSLog(@"mStr1 = %@",mStr1);


//可变字符串的初始化方式

NSMutableString *mStr2 = [NSMutableString stringWithCapacity:100];

//mStr = @"fkdsj323";可变字符串不能直接赋值(直接赋值的在常量区)


[mStr2 appendString:@"你真帅"];

NSLog(@"mStr2 = %@",mStr2);

//前面插入帅哥 后面拼接 约吗

[mStr2 insertString:@"帅哥" atIndex:0];

[mStr2 appendString:@"约吗?"];

NSLog(@"mStr2 = %@",mStr2);


//替换

NSRange range3 = [mStr2 rangeOfString:@"约吗"];

[mStr2 replaceCharactersInRange: range3  withString:@"不约"];


//重置字符串

[mStr2 setString:@"美女 你真瘦"];

NSLog(@"mStr = %@",mStr2);


//注意 setstring:只是重新修改了指针所指想的空间的值,并没有发生指针重指向的问题//下面使用了便利构造器,内部有alloc ,重新开辟了空间

mStr2 = [NSMutableString stringWithString:@"美女"]

你可能感兴趣的:(字符串(NSString))