今天主要说的是不可变字符串以及可变字符串的系统方法的调用和作用(配套练习题以及源代码下载页面)

main函数

#import <Foundation/Foundation.h>

int main(int argc,constchar * argv[]) {

#pragma mark -- 字符串

学习系统类

1.利用系统的类初始化对象出来

NSString *str = @"123";
//  自定义初始化方法
NSString *str = [[NSString alloc]initWithFormat:@"王龙-%@",@"18岁"];
NSLog(@"%@",str);
//  便利构造器方法
NSString *str1 = [NSString stringWithFormat:@"adcarry-%@",@"伊泽瑞尔"];
NSLog(@"%@",str1);

2.利用创建出的对象调用系统方法

获取字符串长度

NSString *str = [NSString stringWithFormat:@"adcarry-%@",@"卡莉斯塔"];
NSUInteger length = [str length];
NSLog(@"%lu",length);// 从1开始数

获取子字符串(子字符串)

按范围截取字符串(从哪切,切多少)

NSRange range = NSMakeRange(8, 4);
NSString *strNew = [str substringWithRange:range];
NSLog(@"%@",strNew);

按索引截取

从索引处开始截取截取到结束(从哪里开始切)

NSString *strNew = [str substringFromIndex:3];
NSLog(@"%@",strNew);
//  从头开始到索引处 (切到哪里)
NSString *strNew2 = [str substringToIndex:7];
NSLog(@"%@",strNew2); 

字符串拼接

NSString *strNew = [str stringByAppendingString:@"+河流之主"];
NSLog(@"%@",strNew);

格式化拼接

NSString *strNew2 = [str stringByAppendingFormat:@"+河流之主-%@",@"塔姆"];
NSLog(@"%@",strNew2);

字符串替换

前面的给替换成后面的

NSString *strNew =[str stringByReplacingOccurrencesOfString:@"卡莉斯塔" withString:@"伊泽瑞尔"];
NSLog(@"%@",strNew);
NSRange range = NSMakeRange(8, 4);
NSString *strNew1 = [str stringByReplacingCharactersInRange:range withString:@"金克斯"];
NSLog(@"%@",strNew1);

判断字符串相等

NSString *str1 = @"adcarry-卡莉斯塔";
BOOL result = [str isEqualToString:str1];
NSLog(@"%d",result);<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

判断前缀后缀

BOOL result = [str hasPrefix:@"adcarry"];
BOOL result1 = [str hasSuffix:@"卡莉斯塔"];
NSLog(@"%d",result);
NSLog(@"%d",result1);    

字符串比较

NSString *str1 = @"abc";
NSString *str2 = @"acc";
NSComparisonResult result = [str1 compare:str2];
NSLog(@"%ld",result);

字符串大小写 转换

NSString *str = @"how are you";
NSString *strNew = [str uppercaseString];NSLog(@"%@",strNew);

全部转小写

NSString *str2 = [strNew lowercaseString];
NSLog(@"%@",str2);

首字母大写

NSString *str3 = [str2 capitalizedString];
NSLog(@"%@",str3);

练习题:给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg”

NSString *imageName = @"haha";
//  oc里NULL用nil来代替
BOOL result = [imageName hasSuffix:@"png"];
if (result) {imageName = [imageName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
}
else{imageName = [imageName stringByAppendingString:@".jpg"];
}
NSLog(@"%@",imageName);

不可变字符串 NSString

不可变字符串如果重新赋值改变的不是其本身这个字符串而是进行了重指向指向了一个新的字符串

NSString *str = @"王龙";
str = @"壮壮";
NSLog(@"%@",str);

可变字符串 NSMutableString

相当于指向常量区

NSString *strs = @"sgr";

可变字符串 NSMutableString 进行初始化

NSMutableString *str = [[NSMutableString alloc] initWithString:@"sugar"];

便利构造器

NSMutableString *str1 = [NSMutableStringstringWithString:@"sugar"];

拼接字符串(特点肯定是没有返回值的,因为是可变字符串操作的是字符串本身)

插入字符

替换字符

删除字符

[str1 appendString:@" yes please"];
NSLog(@"%@",str1);
[str1 insertString:@"comingback" atIndex:5];
NSLog(@"%@",str1);
NSRange range = NSMakeRange(8, 3);
[str1 replaceCharactersInRange:range withString:@"e"];
NSLog(@"%@",str1);
NSRange range1 = NSMakeRange(5, 8);
[str1 deleteCharactersInRange:range1];
NSLog(@"%@",str1);

练习题:给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg”

 BOOL result = [str1hasSuffix:@"png"];
if (result) {NSInteger count = [str1length];NSRange range =NSMakeRange(count -3,3);[str1 stringByReplacingCharactersInRange:rangewithString:@"jpg"];
}
else{[str1 appendString:@".jpg"];
}
NSLog(@"%@",str1);
return0;
}

可变数组和不可变数组的调用

1.数组:存储的必须是对象类型

NSArray 不可变数组

不可变数组切记不可以进行增删

NSArray *array = [[NSArray alloc]initWithObjects:@"王龙",@"壮壮",@"薇恩", nil];
NSArray *array1 = [NSArray arrayWithObjects:@"艾弗森",@"韦德",@"科比", nil];//  语法糖
NSArray *array2 = @[@"艾弗森",@"韦德",@"科比"];
//  获取一下元素的个数
NSUInteger a = [array2 count];
NSLog(@"%lu",a);
NSLog(@"%@",array2[0]);
//  打印数组的所有元素
for (int i = 0; i < [array2 count]; i++) {NSLog(@"%@",array2[i]);
}
//  获取数组的第一个元素
//  获取数组的最后一个元素
NSLog(@"%@",[array2 firstObject]);
NSLog(@"%@",[array2 lastObject]);

可变数组 NSMutableArray

1.初始化可变数组

用类方法初始话一个空的数组

切记:使用可变数组的时候必须要进行初始化才能添加数据

NSMutableArray *array = [NSMutableArray array];
//  添加两个字符串进数组
[array addObject:@"保罗"];
[array addObject:@"格里芬"];
NSLog(@"%lu",[array count]);
//  按照索引删除一个元素
[array removeObjectAtIndex:0];
NSLog(@"%lu",[array count]);
//  添加一个元素
[array addObject:@"格里芬"];
//  在保罗和格里芬之间添加一个小乔丹
[array insertObject:@"小乔丹" atIndex:1];
NSLog(@"%@",array[1]);

数值对象类

可以把基本数据类型转化成对象类型

把整形转化成 NSNumber对象类型

<span style="font-size:18px;">NSNumber *number = [NSNumber numberWithInt:5];
NSNumber *number1 = [NSNumber numberWithFloat:10.5];</span>

把对象类型 转化成基本数据类型

int value = [number intValue];
float value1 = [number1 floatValue];

NSValue 类

可以把结构体转化成对象类型

NSRange range =NSMakeRange(2,3);
NSValue *sss = [NSValuevalueWithRange:range];
NSLog(@"%@",sss);

我的iOS学习历程 - OC第四天相关推荐

  1. 我的iOS学习历程 - OC第九天

    今天主要讲的是内存的管理方法 1.IOS的内存管理中 Mac是使用的垃圾回收(gc) 有轮询延迟 手机用的是 引用计数 2.引用计数的方法: ( 1 ) alloc alloc 开辟空间引用计数 从0 ...

  2. 黑马程序员- IOS学习笔记-OC三大特性

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 封装 set方法 1.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 ...

  3. iOS学习笔记---oc语言第三天

    继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...

  4. 我的iOS学习历程 - UISlider(简单的设置一组图片动画)

    今天我们学习的是UISlider,就是平时看视频听音乐等的进度条的设置 今天设置的slider是控制播放一组图片速度的例子: 1.初始化以及设置一些属性 // 初始化UISlider *slider ...

  5. 我的iOS学习历程 - UISegmentedControl

    今天学习的是UISegmentedControl,相当于一个切换的分区栏,例如看小说会分最新,最热等,可以用此控件来进行切换 1.初始化(用数组进行初始化)并添加到视图上 // 数组中初始化必须是字符 ...

  6. ios 学习札记 细节(四)

    (1)概念:条件变量 linux多线程共享变量时候应用 (2) 新装的renren sdk总是编译失败,出现原因是xcode版本不对,重新换成新的好了. (3) timeoutInterval  已经 ...

  7. Linux运维学习历程-第十四天-磁盘管理(一)磁盘分区表类型与文件系统

    概述:本章介绍磁盘分区和文件系统,深度了解linux存储数据所依赖到各个部分模块. 设备文件 I/O Ports: I/O设备地址 一切皆文件: Linux为所有的设备文件都提供了统一的操作函数接口, ...

  8. iOS学习笔记---oc语言第八天

    属性 能在一定程度上简化代码,并且增强实例变量的访问安全性 属性的声明:使用@property声明属性  eg:@property NSSstring *name;相当于@interface中声明了两 ...

  9. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

最新文章

  1. linux基础-总结题 (每日更新)
  2. Leetcode 1
  3. java并发编程详解,Java架构师成长路线
  4. 【Oracle】RAC11gR2Grid启动顺序及启动故障诊断思路
  5. 【ARM】Tiny4412裸板编程之MMU(段1M)
  6. `constexpr`和`const`之间的区别?
  7. Objective c类的初始化
  8. ubuntu的sudo输入密码时光标不动的问题
  9. NCSDK make install: Error in line 170
  10. arcgis-tomcat-cors
  11. Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器
  12. linux虚拟机上lvs-nat的实现
  13. eclipse中导入jar包源文件
  14. 流媒体-RTMP协议-librtmp库学习(二)
  15. 安卓模拟器genymotion安装设置修改IMEI
  16. 飙泪怀旧:那些经典的老软件、老网站
  17. Educational Codeforces Round 91 D. Berserk And Fireball
  18. 微软宣布任命前MOTO亚太总裁梁念坚为中国区CEO
  19. MFC--按键、按钮按下和弹起事件检测
  20. FC6下的ftp服务和telnet服务安装

热门文章

  1. 若依微服务版RuoYi-Cloud本地环境快速搭建教程
  2. Flask一对多学生课程表项目搭建
  3. 什么是.NET Native?
  4. 内网穿透(实现外网访问内网)
  5. C# Console.WriteLine堵塞进程
  6. git 回滚/撤回提交代码、误删、误提交恢复
  7. 如何确定PC Nvidia显卡是否支持CUDA以及cudaNN?
  8. 2022.3.21-3.27 AI行业周刊(第90期):中年裁员
  9. 马斯克又要逆天!飞船回收24小时内只加燃油再次上天
  10. c#操作mysql 执行语句_C# Command:操作数据库