#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-字符串、数组、字典总结的更多相关文章

  1. oc字符串+数组+字典操作题目

    1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...

  2. Swift学习—字符串&数组&字典

    字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...

  3. Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)

    swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...

  4. OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏

    ==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...

  5. IOS NS 字符串 数组 字典 文件 动态 静态 操作

    ios 常用字符串的操作   //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response e ...

  6. Object-C 语法 字符串 数组 字典 和常用函数 学习笔记

    字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...

  7. OC ---- 字符串 数组 iOS学习-----细碎知识点总结

    NSString *urlString = [NSString stringWithFormat:@"http://www.apple.com"];        // 获取字符串 ...

  8. OC: 数组、集合、字典

    数组.字典.集合 参考1   参考2  参考3  参考4  参考5 NSArray * nn  = @[@"元素1",@"元素2",@"元素3&quo ...

  9. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  10. @proprety数组字典字符串用copy和strong区别(深浅拷贝)

    ////  @proprety数组字典字符串用copy和strong区别(深浅拷贝).h//  IOS笔记//// /* _proprety________copy_strong_________h ...

随机推荐

  1. MyEclipse 2014优化设置(禁用myeclipse updating indexes)

    1.指定本机java环境 Windows-->preferences-->java-->Insetallel JREs 右侧 单击ADD standard VM-->Next ...

  2. Python3.x:pip命令安装第三方库,超时处理方案

    Python3.x:pip命令安装第三方库,超时处理方案 问题: pip install splinter命令安装第三方库,报超时错误: raise ReadTimeoutError(self._po ...

  3. 20145329 《Java程序设计》实验二总结

    实验指导教师:娄嘉鹏老师 实验日期:2016.4.12 实验时间:15:30~17:30 实验序号:实验二 实验名称:Java面向对象程序设计 实验目的与要求: 1.初步掌握单元测试和TDD 2.理解 ...

  4. 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始

    以下以目前遇到题目开始记录,按发布时间排序 ACM之递推递归 ACM之数学题 拓扑排序 ACM之最短路径做题笔记与记录 STL学习笔记不(定期更新) 八皇后问题解题报告

  5. 事务的学习,从jdbc开始:jdbc对事务的支持与实现

    在使用spring对项目进行开发时,所有的事务都是由spring来管理的.这样一来我们就可以不需要操心事务,可以专心的处理业务代码. 但是,事务的底层究竟是如何实现的呢?那就从jdbc开始学习. 在使 ...

  6. Learning Perl 第九章习题第二题

    把输入文件中的所有Fred换成Larry, 不区分大小写. 知识点 1. 文本文件读写 2. 简单的正则替换 3. unless 的用法 4. $_ 的用法

  7. node.js 之 http 架设

    Node.js 安装配置 下载node.js安装mis 打开:cmd cd到node.js安装目录下 输入nodejs --version 显示版本号,证明安装成功 在其根目录下建server.js ...

  8. switchhosts使用技巧

    https://jingyan.baidu.com/article/1974b289a3cfd1f4b0f7744d.html

  9. 【Python】简单实现爬取小说《天龙八部》,并在页面本地访问

    背景 很多人说学习爬虫是提升自己的一个非常好的方法,所以有了第一次使用爬虫,水平有限,依葫芦画瓢,主要作为学习的记录. 思路 使用python的requests模块获取页面信息 通过re模块(正则表达 ...

  10. 【Python】关于使用pycharm遇到只能使用unittest方式运行,无法直接选择Run

    相信大家可能都遇到过这个问题,使用pycharm直接运行脚本的时候,只能选择unittest的方式,能愁死个人