#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. zookeeper No route to host

    2017-10-12 07:25:59,270 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@36 ...

  2. 微信小程序 drawImage 问题

    好久没写了,其实可写的还是挺多,主要还是懒吧... 最近公司项目使用小程序做序列帧动画,大概有 116 张图,共9.6M. 比较闲的日子里实验了一番,主要有以下几种方法, 1. css backgro ...

  3. 20145201李子璇《网络对抗》逆向及Bof基础实践

    20145201李子璇<网络对抗>逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  4. git-修改远程的URL

    git remote set-url命令修改remote URL git remote set-url传递两个参数 remote name.例如,origin或者upstream new remote ...

  5. Python Matplotlib简易教程【转】

    本文转载自:https://blog.csdn.net/Notzuonotdied/article/details/77876080 详情请见:Matplotlib python 数据可视化神器 简单 ...

  6. eclipse集成tomcat修改字符集参数

    问题: 在eclipse 4.4(Luna)中集成tomcat时,直接修改原tomcat目录中的配置文件,不起作用. 有时,我们会修改字符集参数为utf-8,以解决中文乱码问题,改动之后依然乱码…… ...

  7. Centos为mysql开启binlog

    1.查询mysql配置文件所在位置 2.编辑配置文件/etc/my.cnf 在文件尾部添加: log-bin=/var/lib/mysql/mysql-bin server-id=123454  (5 ...

  8. 异步:asyncio和aiohttp的一些应用(1)

    1. asyncio 1.1asyncio/await 用法 async/await 是 python3.5中新加入的特性, 将异步从原来的yield 写法中解放出来,变得更加直观. 在3.5之前,如 ...

  9. LeetCode——Nth Digit

    Question Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... ...

  10. 独家git clone 加速方法

    git clone 独家方法 最近需要下载网上很多github库,所以git clone 4kb/s 的速度可以把人逼疯,为了加速git clone才有了这篇博客 网上有很多加速的方案 比如 blog ...