OC基本数据类型-NSString

这篇博客详细介绍了Objective-C中的NSString和NSMutableString的使用,包括字面量创建字符串、获取长度、字符访问、截取、比较、转换、拼接、替换等操作,还探讨了不可变字符串与可变字符串的区别和操作。
摘要由CSDN通过智能技术生成

通过字面量的方式创建一个字符串

NSString *str=@”杨林qwertyuiop”

用点方法打印字符串的长度

NSLog(@”%ld”,str.length);

打印下标为4的字符

NSLog(@”%c”,[str characterAtIndex:4]);

通过alloc和init创建一个空字符串

NSString *str1=[[NSString alloc]init]; 
NSString *str2=[[NSString alloc]initWithString:@”刘珊珊”];
// 用便利构造器和初始化方法创建字符串对象也可以,也能正常使用,但是系统还是更倾向于用字面量的方式来完成对象的创建

substring 截取字符串

NSString *str=@”nihao,wo de mingzi jiao liushanshan”; 
NSLog(@”%@”,[str substringFromIndex:5]);// 从下标为5的字符开始打印; 
// 打印结果:Nsstirng[658:303] ,wode mingzi jiao liushanshan

NSLog(@”%@”,[str substringToIndex:5]);// 打印到下标为5的位置; 
// 打印结果: Nsstirng[669:303] nihao

NSrange

NSRange range={3,7};// 定义一个范围,3为location,为起始位置,7为长度; 
NSLog(@”%@”,[str substringWithRange:NSMakeRange(3, 7)]); 
// 打印结果:Nsstirng[682:303] ao,wode 
// 两种方法指定字符串的范围,可以直接指定一个范围 或者用nsmakerange;

比较两个字符串内容是否的相同

NSString *str1=@”nihao”; 
NSString *str2=@”nihao”; 
NSLog(@”%d”,[str1 isEqualToString:str2]);// isEqualToString是系统提供的一个BOOL类型的方法,用于判断 
// 结果 Nsstirng[707:303] 1 
if(str1==str2){};//比较的是两个字符串的地址

判断字符串是否有前缀和后缀

NSString *str=@”liushanshan”; 
NSString * prefix=@”li”; 
NSLog(@”%d”,[str hasPrefix:prefix]);// hasPrefix也是系统提供的一个BOOL类型的方法,还有判断后缀的suffix 
// 打印结果:Nsstirng[726:303] 1

把一个字符串转换成整型等基本数据类型

NSString *strNum=@”12345”; 
NSInteger num=[strNum integerValue]; 
NSLog(@”%ld”,num);

把基本数据类型直接转换成字符串

stringWithFormat:// 方法可以把任意类型转换为字符串类型,可以进行拼接
// 但是拼接和修改是任意的 
CGFloat g=3.14; 
NSInteger a=100; 
NSString *str=[NSString stringWithFormat:@”%ld,%g”,a,g];// Format:格式 
NSLog(@”%@”,str); 
// 打印结果: Nsstirng[773:303] 100,3.14 
// 如果还想在后面继续写别的东西可以直接进行拼接

uppercaseString字符串中所有字母大写 小写或者首字母大写

NSString *str=@”liushanshan”; 
NSLog(@”%@”,str.uppercaseString);// 所有字母大写 
NSLog(@”%@”,str.lowercaseString);// 所有字母小写,即如果字符串中有字母为大写则全部改成小写 
NSLog(@”%@”,str.capitalizedString);// 将字符串的首字母大写, 注意 如果字符串中本身不是首字母的地方本身就是大写的话系统会自动改回小写,保证只有首字母大写 另 如果字符串中间有空格如”liu shan shan”的话,L,S,S都会大写; 
// 2015-07-20 11:30:43.857 oc5-Nsstirng[808:303] LIUSHANSHAN 
// 2015-07-20 11:30:43.859 oc5-Nsstirng[808:303] liushanshan 
// 2015-07-20 11:30:43.859 oc5-Nsstirng[808:303] Liushanshan

字符串的比较

NSString *str=@”nihao”; 
NSString *newStr=@”buhao”; 
NSLog(@”%ld”,[str compare:newStr]); 
// 2015-07-20 11:37:53.545 oc5-Nsstirng[859:303] 1 
// 因为n比b大 所以是1 降序 , 如果是-1 则是升序 0 相等

字符串的拼接

NSString *str=@”liushanshan”; 
NSString *str1=@”yanglin”; 
NSString *strNew=[str stringByAppendingString:str1];// append:附加, 在str的基础上附加上str1 
NSLog(@”%@”,strNew); 
// Nsstirng[870:303] liushanshanyanglin

字符串的替换

// 第一个参数:字符串原有的部分 
// 第二个参数:要替换的内容 
NSString *str=@”刘珊珊”; 
NSString *strNew=[str stringByReplacingOccurrencesOfString:@”刘” withString:@”杨”];用”杨”替换字符串中出现的”刘” 
NSLog( @”%@”,strNew); 
// Nsstirng[888:303] 杨珊珊

NSString:不可变字符串
NSMutableString:可变字符串, 它是NSString的一个子类

创建一个可变字符串

NSMutableString *str=[[NSMutableString alloc]init]; 
// 使用字面量的方式创建的是不可变字符串,只能拿不可变的指针来接收,下面这种写法是错误的; 
NSMutableString *str=@”yanglin”;

自定义初始化

NSMutableString *str=[[NSMutableString alloc]initWithString:@”tengfei”]; 
NSLog(@”%@”,str);

便利构造器

NSMutableString *str1=[NSMutableString stringWithString:@”shangshuai”]; 
NSLog(@”%@”,str1);

插入

NSMutableString *str=[NSMutableString stringWithString:@”jisdoajj jiosaoj jdiosajio jfdslakljds”]; 
[str insertString:@”商帅” atIndex:2];// 从下标为2的地方插入 
NSLog(@”%@”,str); 
// 打印结果:Nsstirng[1913:303] ji商帅sdoajj jiosaoj jdiosajio jfdslakljds

替换

// 将原字符串中某一范围的内容进行替换 
[str replaceCharactersInRange:NSMakeRange(3, 1)withString:@”李牧燃”];// 从下标为3的地方开始替换,替换的长度为1个,如果替换长度为4的话会出现第二种结果,对应插入 中生成的字符串 
NSLog(@”%@”,str); 
// 打印结果:Nsstirng[1928:303] jis李牧燃oajj jiosaoj jdiosajio jfdslakljds
// 从下标为3开始,长度为1,则一共替换到4的位置 
// Nsstirng[1937:303] jis李牧燃j jiosaoj jdiosajio jfdslakljds
// 从下标为3开始,长度为4,则一共替换到下标为7的位置

//将上面的内容全部替换 
 [str setString:@”limuran”];// 将 插入 中生成的字符串整体替换成”李牧燃” 
 NSLog(@”%@”,str); 
// Nsstirng[1949:303] limuran

不可变字符串和可变字符串拼接的区别

// 可变 
[str appendString:@”李牧燃”]; 
NSLog(@”%@”,str); 
// 不可变 
NSString *strNew=[str stringByAppendingString:@”shangshuai”]; 
NSLog(@”%@”,strNew); 
// 可变字符串在方法上一般都是没有返回值的,都是对自身的内容进行修改,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *,

练习

// 给定一个图片文件名,判断字符串中是否以”png”结尾,如果是就替换成”jpg”,如果不是,就拼接”. jpg” 
NSString *str=@”777”; 
if ([str hasSuffix:@”png”])// 判断是否含有后缀”png” 
{ 
str=[str stringByReplacingOccurrencesOfString:@”png” withString:@”jpg”];// 用”jpg”替换”png” 
NSLog(@”%@”,str); 
} 
else{ 
str=[str stringByAppendingString:@”. jpg”];// 拼接”. jpg” 
NSLog(@”%@”,str); 
} 
// 打印结果:Nsstirng[1967:303] 777. jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值