一、NSRange 
1、NSRange的介绍

NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange; NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员
NSUInteger location : 表示该范围的起始位置
NSUInteger length : 表示该范围内的长度

2、NSRange的创建

 ), NSRange range;
//通过结构体变量访问成员
range.location = ;
range.length = ; ),//结构体变量整体赋值
range = (NSRange){,};
NSRange r2 = {,}; //最简单的 ),
NSRange r3 = {.location = ,.length = }; ),OC中新增的(OC中建议使用这种)
//NSMakeRange函数的作用给 NSRange结构体变量赋值
NSRange r4 = NSMakeRange(, );
NSString *str = NSStringFromRange(r4);//将一个结构体转化成字符串

二、字符串的截取和替换

,从指定位置from开始(包含起始位置)到尾部
- (NSString *)substringFromIndex:(NSUInteger)from; ,从字符串的开头一直截取到指定的位置to,不包含结束位置
- (NSString *)substringToIndex:(NSUInteger)to; ,按照所给出的NSRange从字符串中截取子串
- (NSString *)substringWithRange:(NSRange)range; ,字符串截取练习(获取itcast标签中的内容)
NSString *str = @"<hello>tangFeng</hello>";
// @">" loc+1
NSUInteger loc = [str rangeOfString:@">"].location + ; //"t"得位置
// @"</" loc
NSUInteger len = [str rangeOfString:@"</"].location - loc; //要截取的字符的长度
// 构建 ruange
NSRange r2 = NSMakeRange(loc, len);
// 截取
NSString *subStr = [str substringWithRange:r2]; ,字符串替换
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替换target

三、字符串和其他数据类型转换

,和基本数据类型的转换
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (BOOL)boolValue; ,C字符串转OC 字符串
char *s = "zhangsanfeng";
NSString *str = [NSString stringWithUTF8String:s]; ,OC字符串转C字符串
NSString *str2 = @"zbz";
const char *s1 = [str2 UTF8String]; ,去除字符串首尾的空格
NSString *str = @" test at ";
NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
NSString *newStr = [str stringByTrimmingCharactersInSet:set];

四、通过NSURL读写字符串

,URL介绍
URL的全称是Uniform Resource Locator(统一资源定位符).
URL是互联网上标准资源的地址. ,URL格式
基本URL包含:协议、主机域名(服务器名称\IP地址)、路径
举例: http://www.baidu.com/12121.png
可以简单认为: URL == 协议头://主机域名/路径 ,通过URL读写字符串
构建URL
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头 通过文件路径创建(默认就是file协议的)
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上 NSString *str = @"$10000000";
),写入字符串
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil] ),读取字符串
NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

五、NSMutableString的介绍和补充

, NSMutableString类继承NSString类

    ,NSMutableString和NSString的区别:
NSString是不可变的, 里面的文字内容是不能进行修改的;
NSMutableString是可变的, 里面的文字内容可以随时更改; NSMutableString能使用NSString的所有方法.(继承) , 可变和不可变的概念:
不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;
可变: 指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改; ,使用:
NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];
),添加:
[str2 appendString:@"&Rose"];
[str appendFormat:@"http://www.baidu.com/%d",];//格式化的添加字符串 ),在指定的位置插入一个字符串:
[str insertString:@"p://" atIndex:]; ),删除一部分字符串:
[str deleteCharactersInRange:NSMakeRange(, )]; ),替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(, ) withString:@"itnnnn"]; 使用注意:
),不能将不可变的字符串赋值给可变的字符串;
NSMutableString *str = [NSString stringWithFormat:@"abc"];
),NSMutableString的string属性:会将源对象的所有字符串都覆盖掉。.string 属性可以修改字符串的内容
)开发中到底使用NSString还是NSMutableString?
开发中绝大多数用到的都是NSString 只是如果需要做特殊处理的时候(截取、拼接、替换)等操作,才考虑使用NSMutableString

最新文章

  1. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
  2. [LeetCode] Permutations 全排列
  3. FineUI(专业版)v3.1发布(ASP.NET控件库)!
  4. Active Record 数据迁移
  5. SpringMVC使用的几个要点
  6. 实现:编辑短信,按power键锁屏后,再点亮屏幕,进入的还是编辑短信界面,按返回键才会进入解锁界面。
  7. HDU3930 (原根)
  8. c/c++常用代码--使用libcurl下载文件
  9. 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
  10. 第一篇、Apache和Tomcat的整合
  11. 用Canvas,画中国国旗(Canvas基本知识点)
  12. React入门---属性(props)-8
  13. nyoj 63 小猴子下落 思维
  14. Collection集合。
  15. 怎样在ISE14.7中固化FLASH文件
  16. tomcat关闭时Log4j2报错 Log4j Log4j2-TF-4-Scheduled-1 memory leak
  17. Java并发注解Annotation
  18. Log system architecture
  19. 一篇很棒的 MySQL 触发器学习教程
  20. hdu 2962 最短路+二分

热门文章

  1. Android Training - Volley(Lesson 0 - 序言)
  2. Zoho CEO:云计算泡沫巨大 Salesforce仅仅是新的Siebel
  3. JDBC数据库编程:callableStatement接口
  4. PHPCMS V9使用中的一些心得体会
  5. jquery 在ul中取得第一级的li
  6. 快速理解linux流编辑器sed命令
  7. ArgumentException: Getting control x&#39;s position in a group with only x controls when doing KeyDown Aborting解决方法
  8. Nginx图片的防盗链配置
  9. 李洪强iOS开发之iOS社区收集
  10. Post+Get方式接口测试代码编写