iOS开发Extra系列:NSString***
在iOS系统,NSString可能是最常用的对象,很多用法跟其他语言不一样。
字符串对象NSString
使用格式创建字符串
|
1
2
3
4
5
|
+ (id)stringWithFormat:(NSString *)format...- (id)initWithFormat:(NSString *)format...NSString *str = "hello";NSString *string = [NSString stringWithFormat:@"%@ world",str];NSLog(string); |
结果:
|
1
|
hello world |
常用的替换符
%@ NSString实例
%d,%D,%i 整数
%4d,%4D,%4i 格式化整数
%ld,%lD,%li 长整数
%u,%U 无符号整数
%x 将无符号整数以十六进制小写字母显示
%X 将无符号整数以十六进制大写字母显示
%f 小数
%c 字符
%s C语言字符串
%% 显示%字符本身
范围集合NSRange
定义
|
1
2
3
4
5
|
typedef struct _NSRange{ unsigned int location; unsigned int length;}NSRange; |
NSMakeRange函数
这个函数比较特殊 返回一个NSRange的对象。
|
1
|
NSMakeRanger(unsigned int location,unsigned int length); |
例如:
|
1
2
|
NSRange range = NSMakeRanger(0,5);NSLog(@"location is %d,length is %d",range.location,range.length); |
查找
如果找到就返回范围,否则NSRange的location项被设置为NSNotFound
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
- (NSRange)rangeOfString:(NSString *)subString;- (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask;- (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask range:(NSRange)range;//mask常用选项列表//NSCaseInsensitiveSearch 不区分字母大小写//NSLiteralSearch 对字符串进行字节单位的比较,一般可提高检索速度//NSBackwardsSearch 从范围的末尾开始检索//NSAnchoredSearch 仅检索制定范围的前部。忽略字符串中间的检索字符NSString *string = @"hello world";NSRange range = [string rangeOfString:@"he"];if(range.location != NSNotFound){ NSLog(@" location=%d,length=%d",range.location,range.length);} |
截取字符串
|
1
2
3
4
5
6
7
8
9
|
NSString//返回字符串开头至index位的字符串 不包含索引位- (NSString *)substringToIndex:(unsigned)index;//返回字符串第index位至末尾的字符串 包含索引位- (NSString *)substringFromIndex:(unsigned)index;//返回字符串中范围range内的字符串- (NSString *)substringWithRange:(NSRange)range;//包含索引位NSString *string = [string substringWithRange:NSMakeRange(5,2)]; |
比较字符串
|
1
2
3
4
5
6
7
8
9
10
|
NSString *String1 = @"NSStringInformation.txt";//hasPrefix 前缀比较[String1 hasPrefix:@"NSString"] = = 1 ? NSLog(@"YES") : NSLog(@"NO");//hasSuffix 后缀比较[String1 hasSuffix:@".txt"] = = 1 ? NSLog(@"YES") : NSLog(@"NO");//isEqualToString 完全比较if([string1 isEqualToString:@""]){ NSLog(@"string1 is blank");} |
替换字符串
|
1
|
NSString *newString = [oldString stringByReplacingOccurrencesOfString:@"x" withString:@"y"]; |
分离字符串成数组
|
1
2
|
NSString *string = @"A|B|C|D";NSArray *array = [string componentsSeparatedByString:@"|"]; |
读取文本文件
|
1
2
3
4
5
|
NSString+ (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error //自动释放内存- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)errorNSString *string = [NSString stringWithContentsOfFile:@"/user/test/yw.txt" encoding:NSUTF8StringEncoding error:&error];if(string){} |
输出文本文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
NSString- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error//参数 atomically 暂时将文件保存到辅助文件中//path The file to which to write the receiver. If path contains a tilde (~) character, you must expand it withstringByExpandingTildeInPath before invoking this method.//扩展路径NSString *Path = @"~/NSData.txt";NSString *absolutePath = [Path stringByExpandingTildeInPath];NSLog(@"absolutePath:%@",absolutePath);NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);//文件扩展名NSString *Path = @"~/NSData.txt";NSLog(@"Extension:%@",[Path pathExtension]); |
iOS开发Extra系列:NSString***的更多相关文章
- iOS开发技巧系列---详解KVC(我告诉你KVC的一切)
KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...
- 【转】iOS开发工具系列(按功能分)
http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...
- iOS开发笔记系列-基础1(数据类型与表达式)
学习iOS开发快两年了,去年完成MagViewer之后就因为公司的其他业务繁重,除了维护这个应用之外,只是断断续续地自己做一些实验开发,没有再发布新的应用,这里想整理一下学习过程中的笔记,以便加深印象 ...
- iOS开发笔记系列-基础2(类)
面向对象编程总是离不开类和对象的,Objective-C也不例外,不过Objective-C中的类还有一些自己的独特点. 类的声明和定义 在iOS开发中,类的声明与定义通常都是分开的,类得声明通常存放 ...
- iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...
- IOS 开发中判断NSString是否为空字符
//当 请求网络 或者获取其他返回数据 首先 要做一次判断 数据是否为空 防止程序崩溃 程序崩溃 好比拿刀扎在程序员的心啊- if(为空) { 做提示对话框等操作 } else { 正常执行 } - ...
- iOS开发笔记系列-基础6(预处理程序)
预处理程序提供了一些工具,使用这些工具更易于开发.阅读.修改程序,也易于将程序移植到不同的系统中.又称为宏. #define #define语句的基本用途之一就是给富豪名称指定程序常量.比如: #de ...
- iOS开发笔记系列-基础5(分类和协议)
分类 在Objective-C中,除了通过新建子类的方式来向类添加新方法外,还可以通过分类的方式.分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中,它还提供了扩展现有类定义的简便方式, ...
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...
随机推荐
- memcached +php环境配置和分析
一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...
- 【python cookbook】【数据结构与算法】2 从任意长度的可迭代对象中分解元素
从某个可迭代对象中分解出N个元素,但是可迭代对象的长度可能超过N,会出现“分解值过多”的异常: 使用“*表达式”来解决该问题: Python 3.4.3 (v3.4.3:9b73f1c3e601, F ...
- ASP.NET MVC Model验证总结【转】
一.启用客户端验证: 客户端验证主要是为了提高用户体验,在网页不回刷的情况下完成验证. 第一步是要在web.config里启用客户端验证,这在MVC3自带的模板项目中已经有了: <add key ...
- bash正则表达式
星号*: 匹配它前面的字符串或正则表达式任意次(包括0次). 比如:* 可能匹配的字符串有:... ...... 句号.: 匹配除换行符之外的任意一个字符. 比如:"112.",将 ...
- 做一个MVC4的项目时留下的经验--增加IPrange
/* CR#1796870 modify by v-yangwu, add a js file to control the page controls. */ $(document).ready(f ...
- Python学习总结:目录
Python 3.x总结 Python学习总结[第一篇]:Python简介及入门 Python学习总结[第二篇]:Python数据结构 Python学习总结[第三篇]:Python之函数(自定义函数. ...
- 完整学习git二 git 暂存区
1 git log 命令查看提交日志信息 git log --pretty-fuller #详细查看 git log --stat #查看每次提交的文件变更 git log --pretty-onli ...
- hdwiki 框架简介
虽然HDwiki是一个开源的wiki系统,并且代码简洁易懂,但如果想在系统上做做进一步开发还需要对框架有一个整体的认识.熟悉了HDwiki的框架以后完全可以独立出来做其他功能的开发,当做一个开源的PH ...
- [转]关于 initWithNibName 和 loadNibNamed 的区别和联系-iPhone成长之路
转载地址:http://blog.sina.com.cn/s/blog_7b9d64af01018f2u.html 关于 initWithNibName 和 loadNibNamed 的区别和联系.之 ...
- Android 坐标与宽高研究getLeft() getTop() getRight()和getBottom()
把view看做一个矩形,分别表示的是一个view的左边,上边,右边,下边距离他的父组件的距离. getRight() =getLeft() + getWidth() getBottom()= getT ...