OC-字符串、数组、字典总结
#import <Foundation/Foundation.h>
/*
∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改;
NSString //不可变字符串
NSMutableString//可变字符串
NSArray// 不可变数组
NSMutableArray//可变数组
NSDictionary//不可变字典
NSMutableDictionary//可变字典
可变的意思是可以对这个类型定义的变量进行修改或者删除操作
*/
int main(int argc, const char * argv[]) {
@autoreleasepool {
/************************* 总结:字符串 **********************************/
//============== NSString ===========================
NSString *str = [[NSString alloc] init];
//初始化=====================
NSString *str0 = @"Hello World";
NSString *str1 = [[NSString alloc] initWithFormat:@"%@",str0];
//字符串万能拼接 =====================
NSString *st = [NSString stringWithFormat:@"%@%@",str0,str1];
//求字符串长度------使用length =====================
NSUInteger length = [st length];
//字符串的转化 =====================
int a = [@"123" intValue];
long long b = [@"123456789987654321" longLongValue];
float c = [@"0.123" floatValue];
//字符串分割 =====================
//【注】字符串分割要在字符串有效长度范围内
NSString* tempStr = @"hello world,my name is kity";
NSString* FStr = [tempStr substringFromIndex:5];
NSString* FStr1 = [tempStr substringToIndex:5];
NSRange range = {2,3};
NSString* FStr2 = [tempStr substringWithRange:range];
//以空格对字符串进行分割
NSLog(@"%@",[tempStr componentsSeparatedByString:@" "]);
NSArray* lrcArray = [tempStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];
//字符串的比较 =====================
NSString *tem1 = @"abc";
NSString *tem2 = @"bcd";
if ([tem1 isEqualToString:tem2]) {
NSLog(@"==");
}else{
NSLog(@"!=");
}
NSComparisonResult result = [tem1 compare:tem2];
if (result == NSOrderedAscending) { //递增
NSLog(@"tem2 > tem1");
}
else if (result == NSOrderedDescending) //递减
{
NSLog(@"tem2 < tem1");
}else if (result == NSOrderedSame)
{
NSLog(@"tm2 == tem1");
}
//BOOL 读作布尔类型,只有2种状态,真或者假,可以用1、0也可以用yes 、no
//字符串前缀和后缀判断 =====================
NSString* string = @"http://www.baidu.com";
BOOL have = [string hasPrefix:@"http://"];
if (have == YES) {
NSLog(@"是http://开头");
}
else
{
NSLog(@"不是http://开头");
}
BOOL havejiewei = [string hasSuffix:@"com"];
if (havejiewei) {
NSLog(@"是com结尾");
}
else
{
NSLog(@"不是com结尾");
}
//字符大小写转换 =====================
//转成大写
NSLog(@"%@",[string uppercaseString]);
//转成小写
[string lowercaseString];
//所有单词首字母大写
[string capitalizedString];
//查找字符串中的某个字符串,进行替换,第一个参数是要查找的字符串,第二个字符串为需要替换成的字符串
string = [string stringByReplacingOccurrencesOfString:@"www" withString:@"googl"];
NSLog(@"%@",string);
//============== NSMutableString ===========================
NSMutableString* m_str = [[NSMutableString alloc]initWithString:@"ceshishuju"];
//字符串的修改
[m_str setString:@"hello world"];
//字符串的追加
[m_str appendFormat:@" nihao"];
//字符串的删除
NSRange rang = {1,2};
[m_str deleteCharactersInRange:rang];
//字符串的插入
[m_str insertString:@"xijinping" atIndex:3];
NSLog(@"%@",m_str);
/************************* 总结:数组 **********************************/
//oc中可以把NSObject对象的子类放到数组这个集合中,但是int、float、double等基础数据类型需要先进行转换才可以存入数组。
// oc中数组以NS开头,其中分为可变数组和不可变数组;
//============== NSArray ===========================
//数组初始化之后,不能对其进行增删改的数组,是不可变数组,不可变数组的数据只有第一次初始化的时候给赋值,之后不允许进行增删改;可以理解为是一种只读做用;
NSArray *arr = [[NSArray alloc] init];
//数组初始化 =====================
NSArray *arr1 = @[@"hello",@"111",@"你好",@"good"];
NSArray *arr2 = [[NSArray alloc] initWithArray:arr];
//数组中初始化时可以放任何对象,给它分配内存并初始化值,最后一个nil结尾一定不要省略。
NSArray *arr3 = [[NSArray alloc] initWithObjects:@"hello",@"111",@"你好",@"good", nil];
//取元素 =====================
NSLog(@"%@",[arr objectAtIndex:0]);//0表示第0个位置的元素
//取数组元素个数
NSLog(@"%ld",[arr1 count]);
//遍历数组 =======================
for (int i=0; i<[arr count]; i++) {
NSLog(@"%@",[arr objectAtIndex:i]);
}
//oc中遍历数组有一个更简单的方法
//这个语法就是for(in)语法,for循环先去判断NSString* str 是否在arr中,如果在,则继续循环
//数组会遍历arr的元素个数次
for (NSString* str in arr) {
NSLog(@"%@",str);
}
//优缺点比对
//第一种写法方便遍历指定元素,但写起来繁琐。
//第二种写法简洁,并且不会出现数组越界导致程序崩溃的问题
//这2种方式互补,某一些情况下必须用第一种方式才能解决。
//==============================================
//================== NSMutableArray ===========================
//NSMutableArray 为可变数组,可以进行增删改
//初始化
NSMutableArray *muArr = [[NSMutableArray alloc] init];
//增加元素(可以添加任何对象)============
[muArr addObject:@"12"];
[muArr addObject:@"hello"];
[muArr addObject:@"你好"];
//插入一个元素,在索引值是0的位置,原来元素位置后移
[muArr insertObject:@"haha" atIndex:0];
//修改元素==================
//交换数组元素
[muArr exchangeObjectAtIndex:0 withObjectAtIndex:1];
//替换元素 用999这个对象值来替换掉第0个元素的值
[muArr replaceObjectAtIndex:0 withObject:@"999"];
//删除元素==================
//删除下标索引值是0的元素
[muArr removeObjectAtIndex:0];
//删除数组元素中最后一个元素
[muArr removeLastObject];
//清空数组 删除数组中所有元素
[muArr removeAllObjects];
//判断是否包含某一个对象================
BOOL isContain = [muArr containsObject:@"999"];
if (isContain) {
NSLog(@"包含");
}
else
{
NSLog(@"不包含");
}
//取数组中的元素===================
//取元素
//【注】严禁数组越界
[muArr objectAtIndex:0];
/************************* 总结:字典 **********************************/
//================== NSDictionary ===========================
//NSDictionary创建的字典对象,初始化value 和 key;这是一个不可变字典,初始化之后数据不可以修改
//初始化(字典可以存任何对象,包括字符串、数组.....) =====================
NSDictionary *dic = [[NSDictionary alloc]init];
NSDictionary *dic1 = @{@"key":@"value", @"i am key":@"i am value"};
NSDictionary *dic2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"One", @"1", @"Two", @"2", nil];
/* =====================
字典中的数据以键值对的方式进行存储
@“One”和@“1”组成了一个键值对
@“1”称为键(key)
@“One”称为值(value)
值是需要存储的数据,键是寻找数据的索引
字典的作用,就是通过键,快速的查找到值。
值可以重复,键是唯一的。
字典中的键值对没有顺序,没有所谓第一个键值对,第二个键值对
键和值都是任意对象,字典中存储对象的地址。不过键往往使用字符串
*/
//通过传入键,返回值的地址==================
NSString * value = [dic1 objectForKey:@"3"];
value = dic1[@"3"];
//返回键值对总数
NSUInteger count = [dic count];
NSLog(@"%lu", count);
//返回所有的键
NSArray * keys = [dic2 allKeys];
//返回所有的值
NSArray * values = [dic2 allValues];
//遍历字典 ===================
for (NSString * key in dic2) {
//每次循环key指向一个键
//通过遍历键,间接遍历了值
NSLog(@"%@", dic2[key]);
}
//================== NSMutableDictionary ===========================
NSMutableDictionary *muDic = [[NSMutableDictionary alloc] init];
//重置字典 =====================
[muDic setDictionary:@{@"1" : @"One", @"2" : @"Two", @"3" : @"Three"}];
//增
[muDic setObject:@"Four" forKey:@"4"];
//删
//通过键删除值
[muDic removeObjectForKey:@"3"];
//通过多个键,删除多个值
[muDic removeObjectsForKeys:@[@"1", @"2", @"3"]];
//删除所有键值对
[muDic removeAllObjects];
/*
************************* 总结:创建枚举器 **********************************
例如:创建学生对象
//数组排序 描述器
student* st1 = [[student alloc]init];
st1.name = @"jack";
st1.score = 90;
student* st2 = [[student alloc]init];
st2.name = @"jack";
st2.score = 99;
student* st3 = [[student alloc]init];
st3.name = @"brady";
st3.score = 98;
//第一步
//把需要排序的对象放入数组
NSArray* sortArr = [[NSArray alloc]initWithObjects:st1,st2,st3,nil];
//第二步
//创建排序规则 需要用到NSSortDescriptor
//【注】排序规则(desc),可以创建至少1个
//【注】当有多个规则时,先按照第一个规则进行排序,再按照第二个规则进行排序 // YES为升序 <--> NO为降序
NSSortDescriptor* desc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSSortDescriptor* desc_score = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO];
//第三步
//把创建的规则放入数组
NSArray* ruleArr = [[NSArray alloc]initWithObjects:desc,desc_score, nil];
//第四步
//用需要排序的数组sortArr 调用方法进行排序
NSArray* newArr = [sortArr sortedArrayUsingDescriptors:ruleArr];
for (student* stu in newArr) {
NSLog(@"%@ %d",stu.name,stu.score);
}
//比较字符串,比较的就是字符中每一个字母的ASCII值
*/
}
return 0;
}
OC-字符串、数组、字典总结的更多相关文章
- oc字符串+数组+字典操作题目
1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...
- Swift学习—字符串&数组&字典
字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...
- Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)
swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...
- OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏
==============NSArray(不可变数组)=========== NSArray,继承自NSObject 用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...
- IOS NS 字符串 数组 字典 文件 动态 静态 操作
ios 常用字符串的操作 //将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response e ...
- Object-C 语法 字符串 数组 字典 和常用函数 学习笔记
字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...
- OC ---- 字符串 数组 iOS学习-----细碎知识点总结
NSString *urlString = [NSString stringWithFormat:@"http://www.apple.com"]; // 获取字符串 ...
- OC: 数组、集合、字典
数组.字典.集合 参考1 参考2 参考3 参考4 参考5 NSArray * nn = @[@"元素1",@"元素2",@"元素3&quo ...
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- @proprety数组字典字符串用copy和strong区别(深浅拷贝)
//// @proprety数组字典字符串用copy和strong区别(深浅拷贝).h// IOS笔记//// /* _proprety________copy_strong_________h ...
随机推荐
- CSS3、SVG、Canvas、WebGL动画精选整理
一.CSS3动画 名称 用途 链接 阴影波纹特效 1.元素hover效果 2.突出表现效果 http://www.jq22.com/code80 横板导航菜单动画 导航菜单 http://www.jq ...
- 【Linux学习】3.Linux常见配置文件
一./etc 配置文件/etc/passwd 用户数据库,其中的域给出了用户名.真实姓名.家目录.加密口令和用户的其他信息 /etc/group 类似/etc/passwd ,但说明的不是用户而是组. ...
- docker基本用法和命令
1.安装docker 检查有没有curl which curl 如果没有用以下命令可安装:sudo apt-get install curl 通过官方提供的脚本安装最新docker curl -sSL ...
- php项目代码 编码格式不对会大范围报错
php项目代码 编码格式不对会大范围报错
- 20145324Java课程总结
20145324课程总结 ●每周读书笔记链接总汇 [第一周](http://www.cnblogs.com/SJZGM10/p/5246770.html) 第二周(不小心删了) [第三周](http: ...
- linux下挂载ISO像镜文件
挂载命令(mount) 命令格式:mount [-t vfstype] [-o options] device dir其中:1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自 ...
- Nodejs Q promise设计思路
Nodejs Q promise库 前言 Q库为nodejs提供了一个基于promise的编程方式,从此避免了一层又一层的callback调用.不过Q的灵活性也给我造成了很大困扰,我可以用promis ...
- [异常记录(二)] 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
错误提示: 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法.不能在群集中使用 Au ...
- shell中的常用通配符,字符类
因为 shell 频繁 地使用文件名,shell 提供了特殊字符来帮助你快速指定一组文件名.这些特殊字符叫做通配符. 通配符 意义 * 匹配任意多个字符(包括零个或一个) ? 匹配任意 ...
- vue-router之学习笔记
用 Vue.js + vue-router 创建单页应用,是非常简单的.使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件( ...