1、字符串的初始化

 //字符串的初始化
NSString *str = @"Hello world!";
NSString *str2 = [[NSString alloc] initWithString:str];
NSString *str3 = [[NSString alloc] initWithUTF8String:"hello world"]; //用C的字符串创建OC的字符串对象
NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c",,'A']; //使用格式符拼接成一个字符串

用这种方法(alloc)创建的字符串需要释放一下

 //用alloc生成的字符串,需要释放一下
[str2 release];
[str3 release];
[str4 release];

所有的alloc init版本的字符串声明,都对应着一个StringWith版本。不需要考虑内存管理

 NSString *str5 = [NSString stringWithUTF8String:"hellow world"];
NSString *str6 = [NSString stringWithFormat:@"%d %@ %c",,@"hello",'R'];
NSString *str7 = [NSString stringWithString:str];

以上三种是自动释放,很难确认在哪里释放,所以叫临时字符串。不需要release

以上创建的字符串都是不可以变化的

2、字符串的方法

 NSString *str = @"hello world!";
NSString *str2 = @"hello word!";

判断两个字符串是否相等

 //判断两个字符串是否相等
BOOL ret = [str isEqualToString:str2];
NSLog(@"%d", ret);//返回true或者false,由于返回值是0或1,所以用%d

比较两个字符串的大小

 //比较两个字符串的大小
NSComparisonResult comRet = [str compare:str2]; //NSComparisonResult是一个枚举,返回值NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending
if(comRet == NSOrderedAscending){
NSLog(@"str < str2");
}
else if(comRet == NSOrderedSame){
NSLog(@"str == str2");
}
else if(comRet == NSOrderedDescending){
NSLog(@"str > str2");
}

查找字符串的位置

 NSString *str = @"I am a so bad man.";
NSString * subStr = @"so";
//查找subStr在str中的位置,返回NSRange
NSRange range = [str rangeOfString:subStr];//返回位置和长度
NSLog(@"location:%lu, %lu",range.location,range.length);

获取子字符串

 NSString *str = @"";
NSString *str2 = [str substringToIndex:]; //从str中提取从头至第6个字符串(不包括第6个),生成新字符串,返回字符串地址。
NSString *str3 = [str substringFromIndex:]; //从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址
//根据指定范围提取字符串
NSRange range = {, };//3表示起始位置,4表示长度
NSString *str4 = [str substringWithRange:range];
NSString *str5 = [str substringWithRange:NSMakeRange(, )];//与上面相同,NSMakeRange直接返回Range

3、可变字符串:继承自字符串,拥有以上的所有方法:包括创建、提取、比较等,但是也增加了一些方法

不能用这个方法创建可变字符串:NSMutableString *str = @"Hello world!";

其他的创建方法都可以。

增加的方法:增、删、改、查

 NSMutableString *str = [[NSMutableString alloc] init];
[str setString:@"hello"]; //设置可变字符串的内容,再次设置就会发生替换字符串内容
 //增,两种方式:追加、插入
[str appendString:@""]; //追加append,在结尾处字符串
[str appendFormat:@"%c",'R']; //追加append,在结尾处追加格式符 [str insertString:@"XXXX" atIndex:]; //插入insert,在Index位置插入
 //删,delete
[str deleteCharactersInRange:NSMakeRange(, )]; //从第3个开始,删除5个字符
 //改,replace
[str replaceCharactersInRange:NSMakeRange(, ) withString:@"RRRRRRRR"];

结题!!!

OC基础数据类型-NSString的更多相关文章

  1. OC基础--数据类型与表达式

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  2. OC基础数据类型-NSNumber

    1.NSNumber:专门用来装基础类型的对象,把整型.单精度.双精度.字符型等基础类型存储为对象 //基本数据类型 //专门用来装基础类型的对象 NSNumber * intNumber = [[N ...

  3. OC基础数据类型-NSData-NSMutableData-NSString

    NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛.NSData创建后不可以再修改,NSMutableData可以再次修改. 1.NSStrin ...

  4. OC基础数据类型-NSSet

    1.集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合.集合是一种哈希表,运用散列算法,查找集合中的元素比数组 ...

  5. OC基础数据类型-NSData

    1.NSData,数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0.1字符流 1 NSString * str = @"hello, world! ...

  6. 【转】 OC基础数据类型-NSSet

    原文 : http://www.cnblogs.com/GISerYang/p/3340937.html 1.集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过 ...

  7. OC基础数据类型-NSDictionary

    1.字典NSDictionary 字典与数组的区别:数组讲究顺序,而字典可以快速帮助我们找到数据,数据是我们的目的,键是我们的手段 NSDictionary *dict = [[NSDictionar ...

  8. OC基础数据类型-NSArray

    1.数组的初始化 NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two", @&quo ...

  9. 三.OC基础--1.NSString的创建和使用,2多文件开发,3类方法,4封装

    三:OC--1.NSString的创建和使用, 1,创建常量字符串,注意使用“@“符号. NSString *astring = @"This is a String!"; //后 ...

随机推荐

  1. Intel GPA 抓取3d模型

    原文链接在这里 http://dev.cra0kalo.com/?p=213 背景信息 Intel的GPA本身是一款图形分析软件,并没有设计从3D程序里抓取模型资源的功能,但这里作者是通过hook G ...

  2. MySql的存储引擎介绍

    下面主要介绍InnoDB.MyISAM和MEMEORY三种存储引擎. InnoDB存储引擎 InnoDB遵循CNU通用公开许可(GPL)发行.InnoDB已经被一些重量级互联网公司所采用,如雅虎.Sl ...

  3. bzoj 4161: Shlw loves matrixI

    Description 给定数列 {hn}前k项,其后每一项满足 hn = a1h(n-1) + a2h(n-2) + ... + ak*h(n-k) 其中 a1,a2...ak 为给定数列.请计算 ...

  4. ASP.NET Web API根据代码注释生成Help文档

    使用Visual Studio新建一个ASP.NET Web API项目,直接运行,查看Help文档可以看到如下的API帮助说明 如何在Description中显示描述. 1. 打开Controlle ...

  5. C3P0数据库连接池的java实现

    1.配置准备 导入jar包 c3p0-0.9.2-pre1.jar mchange-commons-0.2.jar 数据库驱动包,如:mysql-connector-java-5.1.28-bin.j ...

  6. .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter

    dump文件相信有些朋友已经很熟悉了,dump文件的作用在于保存进程运行时的堆栈信息,方便日后排查软件故障,提升软件质量.关于dump分析工具windbg.adplus的文章更多了,如果您还不知道怎么 ...

  7. Java基础(五)面对对象

    一.面向对象 面向对象 : 就是一种编程思想 1.类和对象 类是指描述一类事物,或者看成是一个分类,可以把类看作构造对象的模板. 对象是指具体的个体(也叫实例-instance).创建对象使用 new ...

  8. 初进JAVA职场面试小技巧:一个老学长的吐血之作!

    看着一批批小白的遭遇,有些无奈,又跟我年轻时有些类似.今天正好有点时间,给你几个建议. 1.在结业之前一定要把自己参与过的项目仔细审视一下,一点要特别熟悉项目的流程功能,另外也要重视自己做过的模块,看 ...

  9. 简单来看看JavaBean

    1.什么是JavaBean? JavaBean是一个遵循特定写法的java类. 用作JavaBean的类必须有一个公共的,无参数的构造方法. JavaBean的属性与普通的Java类的属性的概念一样, ...

  10. [翻译]Review——The Inner Workings Of Virtual DOM

    The Inner Workings Of Virtual DOM 虚拟DOM的内部工作机制 原文地址:https://medium.com/@rajaraodv/the-inner-workings ...