字符串作为OC语言的基本对象类型,被我们在各种地方广泛使用,因此熟悉掌握字符串的属性和方法,是OC必不可少的基础之一。

字符串分为可变字符串(NSMutableString)和不可变字符串(NSString),首先我们来学习不可变字符串的属性与方法。

一、不可变字符串

1.创建不可变字符串

主要有四种方法:

1.

  2.

  3.

  4.

2.获取字符串的长度,获取字符串的长度我们可以使用字符串的length属性,可以以此判断字符串是否为空

3.查找子字符串

  1.从字符串开头查找到你的索引位置(包含索引位置)

  2.从索引位置到结束(不包含索引位置)

  3.查找某个范围内的子字符串

4.字符串的比较,一般有两种方法,一种是调用方法isEqualToString,另一种是使用关键字NSComparisionResult,里面有compare方法,调用这个方法,返回的结果为一个枚举类型:NSOrderedAscending(升序), NSOrderedSame(等), NSOrderedDescending(降序)

5. 两个对象的比较

NSString *ob1 = @"Jack";

NSString *ob2 = @"jacken";

Person *p1 = [[Person new] autorelease];

Person *p2 = [[Person new] autorelease];

//注意:p1和p2不是一个对象 只是名字相同而已

//        p1.name = @"Jack";

//        p2.name = @"Jack";

//当一个对象被添加到一个集合里面(NSArray NSDictionary NSSet)

//这个对象的引用计数+1

NSArray *pArray = @[p1];

p1.name = @"Jack";

NSLog(@"%@", ((Person *)pArray[0]).name);

if ([p1 isEqual:pArray[0]]) {

NSLog(@"是同一个对象");

} else{

NSLog(@"不是同一个对象");

}

输出的是:是同一个对象

6.判断字符串是否有某一个前缀和后缀

7.是否包含一个字符串

8.子字符串的具体位置和长度

9.将字符串转换成其他类型,有两种方法,一是强制类型转换,即下面的第一种,二是以initWithFormat的方式创建一个新的字符串,即下面的第二种方法

//字符串的数字 转化为对应的类型doubleValue floatValue

NSString *numStr = @"123";

int num = [numStr intValue];

NSString *ntr = [NSString stringWithFormat:@"%d", age];

二、可变字符串

  可变字符串相对于不可变字符串,增加的功能主要有增、删、改、插(插入)。

1.创建可变字符串

2.增

3.删

4.改

 

5.插

6.重置字符串

  输出结果:

  

OC中NSString的使用、字符串的使用的更多相关文章

  1. OC中NSString 的常用方法

    NSString *str1 = @"BeiJing"; NSString *str2 = @"beijing"; //全部转为大写 NSLog(@" ...

  2. OC中的NSNumber、NSArray、NSString的常用方法

    和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...

  3. OC中的字符串常用方法

    OC中的字符串常用方法 OC中对字符串进行操作使用了Foundation框架中的NSString类(不可变).NSMutableString类(可变). NSString 1.创建字符串 [objc] ...

  4. oc中调用c函数 实现将字符串转换成unsigned char

    帮助码友解决问题,从而复习了一下oc中调用c函数的方式 1,新建c 头文件  test.h 定义 c 函数 #ifndef test_h #define test_h void verificatio ...

  5. OC中加载html5调用html方法和修改HTML5内容

    1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webViewDidFinishLoad: 4.在代理方法中进行操作H ...

  6. Swift: 比较Swift中闭包传值、OC中的Block传值

    一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...

  7. OC 初识NSString,self关键字,继承,成员变量的可见性,description方法

    OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符 ...

  8. OC中intValue要注意的地方

    在程序中,发现一个问题,写了个例子,如下:         NSDictionary * dict = [[NSDictionary alloc] init];        NSString * s ...

  9. OC中控制台日志打印

    OC中Debug版本常用的打印格式化操作   %@ 对象   %d,%i 整型 (%i的老写法)   %hd 短整型   %ld , %lld 长整型   %u 无符整型   %f 浮点型和doubl ...

随机推荐

  1. windows下git 同步数据到github的常见问题

    常用排错方法: 1,查看连接是否正常. 2,push数据有时会报错,这是由于远程repository和我本地的repository冲突造成. 解决方法: 1.使用强制push的方法: git push ...

  2. 链接错误:multiple definition of 'xxx' 问题解决及其原理

    内容借鉴 于CSDN炸鸡叔 错因 截图: “multiple definition of  'head' ” “multiple definition of  'tail' ” 解决过程: 1.首先要 ...

  3. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

  4. C++ map 使用erase在windows下崩溃,在linux下没有问题的原因

    注意:此程序在win环境下会出现上述描述的问题:在mac环境下第一种方式是正常运行的.Map.erase有3个重载函数: void erase(iterator position); size_typ ...

  5. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  6. MAC使用超级终端

    其实很简单. 先用ls看看/dev/tty.*哪个是具体的串口,我这里使用的edison的板子,所以插到macos上后可以看到的设备节点为: 只需要使用screen 命令即可,具体的命令格式如下: s ...

  7. Sketch 画原型比 Axure 好用吗?为什么?

    对工具而言,个人觉得没有说哪个工具好用不好用之分,更重要一点,做设计的来讲什么时候用什么工具来提高工作效率,这个最重要.下面我也来讲讲这二款工具的不同之处: Axure算是原型工具里的 Old Sch ...

  8. java学习(二)

    学号 20189214 <Java程序设计>第二周学习总结 教材学习内容总结 java类 创建java对象需要类似的模板,即类(class) java对象也拥有属性和能够执行的动作. 属性 ...

  9. 一年web网站测试总结

    1. 页面链接检查 每一个链接是否都有对应的页面,并且页面之间切换正确.可以使用一些工具,如LinkBotPro.File-AIDCS.HTML Link Validater.Xenu等工具.Link ...

  10. mysql触发器trigger 实例详解

    mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html)   MySQL好像从5.0.2版本就开始支持触发器的功能 ...