在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 **)error
NSString *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***的更多相关文章

  1. iOS开发技巧系列---详解KVC(我告诉你KVC的一切)

    KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...

  2. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  3. iOS开发笔记系列-基础1(数据类型与表达式)

    学习iOS开发快两年了,去年完成MagViewer之后就因为公司的其他业务繁重,除了维护这个应用之外,只是断断续续地自己做一些实验开发,没有再发布新的应用,这里想整理一下学习过程中的笔记,以便加深印象 ...

  4. iOS开发笔记系列-基础2(类)

    面向对象编程总是离不开类和对象的,Objective-C也不例外,不过Objective-C中的类还有一些自己的独特点. 类的声明和定义 在iOS开发中,类的声明与定义通常都是分开的,类得声明通常存放 ...

  5. iOS开发技巧系列---使用链式编程和Block来实现UIAlertView

    UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...

  6. IOS 开发中判断NSString是否为空字符

    //当 请求网络 或者获取其他返回数据 首先 要做一次判断 数据是否为空 防止程序崩溃 程序崩溃 好比拿刀扎在程序员的心啊- if(为空) { 做提示对话框等操作 } else { 正常执行 } - ...

  7. iOS开发笔记系列-基础6(预处理程序)

    预处理程序提供了一些工具,使用这些工具更易于开发.阅读.修改程序,也易于将程序移植到不同的系统中.又称为宏. #define #define语句的基本用途之一就是给富豪名称指定程序常量.比如: #de ...

  8. iOS开发笔记系列-基础5(分类和协议)

    分类 在Objective-C中,除了通过新建子类的方式来向类添加新方法外,还可以通过分类的方式.分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中,它还提供了扩展现有类定义的简便方式, ...

  9. iOS开发笔记系列-基础3(多态、动态类型和动态绑定)

    多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...

随机推荐

  1. Linux mail 命令参数

    linux mail 命令参数: 使用mail发邮件时,必须先将sendmail服务启动. mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人 ...

  2. libSVM的数据格式

    首先介绍一下 libSVM的数据格式 Label 1:value 2:value -. Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15 ...

  3. 安装Debian的正确方法

    一.说明: Debian7.0.0的安装镜像文件有3个DVD,安装基本系统只用到第一个镜像文件,即DVD1 其它镜像文件是附带的软件包. 附Debian 7.0.0系统镜像下载地址: 32位:http ...

  4. jenkins相关

    1. jenkins maven tomcat做持续集成的时候几个关键配置:http://my.oschina.net/congqian/blog/112782?fromerr=PmIDbLs5 2. ...

  5. 鸟哥的linux私房菜之档案与文件系统的压缩与打包

    00000001 节约空间 其实简单的说压缩就是把没有用到的0给去掉,解压的时候在加上 在linux中,压缩文件档案的扩展名大多是.tar,.tar.gz,tgz,gz,.Z,.bz2 compres ...

  6. SEO之链接农场、内容农场、微信内容农场

    SEO之链接农场.内容农场.微信内容农场 一.“内容农场”的上市之路http://www.neweekly.com.cn/newsview.php?id=3330里斯2006年的第二次创业仍旧延续了上 ...

  7. Google 开发新的开源系统 Fuchsia

    google 最新os 下载 https://github.com/fuchsia-mirror/magenta 本文转自:http://www.oschina.net/news/76094/goog ...

  8. Windows Thin PC 激活方法

    Windows Thin PC 激活方法 笔者之前分享了Windows Thin PC ,如果你已经安装了Windows Thin PC ,但还没有激活,可以参照以下方式进行Windows Thin ...

  9. 【PHP设计模式 11_QiaoJie.php】桥接模式(针对 二维模型)

    <?php /** * [桥接模式(针对 二维模型)] * 对于多维度需要处理的事情,多耦合 * 第一维度,发送信息的类型:站内信.email.手机短信 * 第二维度,发送信息的紧急程度:普通. ...

  10. libsqlite3.dylib找不到

    Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法. 方法1. (heqin ...