iOS --转载 NSRange 和 NSString 详解
一、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
iOS --转载 NSRange 和 NSString 详解的更多相关文章
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- iOS中MVC等设计模式详解
iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...
- iOS 证书与签名 解惑详解
iOS 证书与签名 解惑详解 分类: iPhone2012-06-06 19:57 9426人阅读 评论(1) 收藏 举报 iosxcodecryptographyappleiphone测试 目录 ...
- iOS 6分享列表——UIActivityViewController详解
iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33 发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...
- IOS数据库操作SQLite3使用详解(转)
iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html 一. 概况 本文接着 iOS 开 ...
- iOS 视图控制器转场详解
iOS 视图控制器转场详解 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
随机推荐
- java设计模式之组合
听说你们公司最近新推出了一款电子书阅读应用,市场反应很不错,应用里还有图书商城,用户可以在其中随意选购自己喜欢的书籍.你们公司也是对此项目高度重视,加大了投入力度,决定给此应用再增加点功能. 好吧,你 ...
- ubuntu卸载第三方库
下面以pcl和opencv为例进行说明. 参考资料: https://www.cnblogs.com/txg198955/p/5990295.html ubuntu卸载opencv并重装opencv ...
- (十)Unity5.0新特性------新UI系统实战
原文 Unity New GUI Tutorial – Part 1 Unity New GUI Tutorial- Part 2 Unity New GUI Tutorial – Part 3 大家 ...
- HTML-HTML5+CSS3权威指南阅读(四、媒体查询)
1.媒体类型 HTML 4和CSS 2目前支持为不同的媒体类型设定专有的样式表, 比如, 一个页面在屏幕上显示时使用无衬线字体, 而在打印时则使用衬线字体, screen 和 print 是两种已定义 ...
- canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)
[下篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- Linux命令-网络命令:mail
root用户发送邮件 mail wangyunpeng 给wangyunpeng发送邮件,wangyunpeng不在线也可以收到发送的邮件 wangyunpeng用户接收邮件 mail 接收邮件 he ...
- C语言之指针基础概念
今天就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简 ...
- C# 遍历Dictionary并修改其中的Value
C#的Dictionary类型的值,知道key后,value可以修改吗?答案是肯定能修改的.我在遍历的过程中可以修改Value吗?答案是也是肯定能修改的,但是不能用For each循环.否则会报以下的 ...
- python-循环while
while 只要…条件成立,就一直做…. for 循环会在可迭代的序列被穷尽的时候停止,while 则是在条件不成立的时候停止,因此 while 的作用概括成一句话就是:只要…条件成立,就一直做…. ...
- CI框架源代码阅读笔记7 配置管理组件 Config.php
原文见这里:http://www.cnblogs.com/ohmygirl/p/CIRead-7.html 一个灵活可控的应用程序中,必定会存在大量的可控參数(我们称为配置),比如在CI的主配置文件里 ...