OC之NSString/NSMutableString

简介:

NSString 不可变字符串

NSMutableString 可变字符串

定义:

NSString *str = [[NSString alloc] init];

NSString *str = [[[NSString alloc] init] autorelease];  

注意:在NSString 中存在自己的实例化和初始化的方法 例如:

NSString *str1 = [NSString stringWithCString:"new String" enconding: NSACIIStringEncoding];

NSString *str2 = [NSString alloc] initWithCString:"new String" enconding: NSACIIStringEncoding];

str1str2两个对象是相同的。

NSStringEncoding 中常用的字符编码 

     NSASCIIStringEncoding

     NSUTF8StringEncoding

     NSUnicodeStringEncoding

NSString创建实例 

带“@”符号的方法只能定义含有英文和数字NSString实例,例如:

NSString *str = "Hello money~";

生成含有中文的NSString方法:

1)此方法自动释放内存

NSString *string = [NSString stringWithCString:

"您好" encoding:NSUTF8StringEncoding];  

2)进行alloc后进行初始化

NSString *string = [[NSString alloc] initWithCString:

"您好" encoding:NSUTF8StringEncoding];

使用格式创建字符串:

+ (id)stringWithFormat:(NSString *)format...

- (id)initWithFormat:(NSString *)format...

例如:

NSString *str = "hello";

NSString *string = [NSString stringWithFormat:@"%@ world",str];

NSLog(string); 结果:hello world

常用的替换符:

%@ NSString实例

%d,%D,%i 整数

%u,%U 无符号整数

%x 将无符号整数以十六进制小写字母显示

%X 将无符号整数以十六进制大写字母显示

%f 小数

%c 字符

%s C语言字符串

%% 显示%字符本身

字符串连接,插入和删除 

1、连接

- (NSString *)stringByAppendingString:(NSString *)string;

- (NSString *)stringByAppendingFormat:(NSString *)format...;

例如:

     NSString *str1 = @"hello";

     NSString *str2 = @"world";

     NSString *str3 = [str1 stringByAppendingString:str2];

     NSString *str4 = [str2 stringByAppendingFormat:

@"%d...%d",10,20];

     str4 --> world 10...20

     NSMutableString的生成:

     NSString  + (id)string;  //生成空字符串的实例

     + (id)stringWithString:(NSString *)string; //带自动释放内存

     - (id)initWithString:(NSString *)string;

     例如:

      NSMutableString *string =

[NSMutableString stringWithString:@"hello"];

2、追加字符串

     NSMutableString

     + (void)appendString:(NSString *)string;

     - (void)appendFormat:(NSString *)format...;

     例如:

     NSMutableString string = [NSMutableString string];

     [string appendString:@"hello"];

     [string appendString:@"money"];

     [string appendString:@" and world"];

3、插入字符串

     NSMutableString

     + (void)insertString:(NSString *)string atIndex:(unsigned)index;

     index位置插入字符串

     例如:

      NSMutableString *string =

[NSMutableString stringWithString:@"Mac X"];

      [string insertString:@"OS" atIndex:4];

      string --> Mac OS X

4、删除字符串

      NSMutableString

      + (void)deleteCharactersInRange:(NSRange)range;

 例如:

      NSMutableString *myString =

[NSMutableString stringWithString:@"Mac os"];

      [myString deleteCharactersInRange:NSMakeRanger(0,1)];

等价于:

      NSMutableString * myString =

[NSMutableString stringWithString:@"Mac os"];

NSRange range = [myString rangeofString:@”M”];

[myString deleteCharactersInRange:range];

之后myString 就变成了ac os;

5、字符串比较

     NSString

     - (BOOL)isEqualToString:(NSString *)string;

6、比较前置串和后置串

     NSString

     - (BOOL)hasPrefix:(NSString *)string;

     - (BOOL)hasSuffix:(NSString *)string;

     例如:

     NSString *str1 = @"Mac OS";

     NSString *str2 = @"Mac Pro";

     BOOL flag;

     flag = [str1 hasPrefix:@"Mac"];  YES

     flag = [str2 hasSuffix:@"OS"];  NO

7、字符串检索

     如果找到就返回范围,否则NSRangelocation项被设置为NSNotFound

     - (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);

     }

8、截取字符串

1)返回字符串开头至index位的字符串 不包含索引位

     - (NSString *)substringToIndex:(unsigned)index;

2)返回字符串第index位至末尾的字符串 包含索引位

- (NSString *)substringFromIndex:(unsigned)index;

3)返回字符串中范围range内的字符串 包含索引位

     - (NSString *)substringWithRange:(NSRange)range;

例如:

     NSString *string = [string substringWithRange:NSMakeRange(5,2)];

9、读取文本文件

     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/LFF.txt" encoding:NSUTF8StringEncoding error: nil]

还有一个更强大的方法:

//NSURL *url = [[NSURL alloc] initWithString:

@"file:///Users/apple/Desktop/1.txt"];

NSURL *url = [NSURL fileURLWithPath:

@"/Users/apple/Desktop/1.txt"];

   

NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:

NSUTF8StringEncoding error:nil];

NSLog(@"s6=\n%@", s6);

使用读取URL的方法,不仅可以读取本地资源,还可以读取网络资源,但要注意资源路径的格式:

URL : 资源路径

    协议头://路径

    file://

    ftp://

10、将字符串写入文本文件

     NSString

    -(BOOL)writeToFile:(NSString*)path atomically:

(BOOL)useAuxiliaryFile encoding: (NSStringEncoding)

enc error:(NSError **)error

例如:[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];


目录
相关文章
|
传感器 弹性计算 安全
从0开始的mqtt服务器
本篇文章将会介绍如何利用阿里云搭建一个属于自己的mqtt服务器
从0开始的mqtt服务器
|
1月前
|
应用服务中间件 数据库 nginx
从 localhost 到公网服务:Web 项目开发、部署与上线完整流程
为vibecoding小白提供了从本地AI写代码到部署网站上线的完整流程
524 0
|
4月前
|
运维 数据可视化
便捷高效网络检测——VSPing新手必备指南
VSPing是一款专业在线Ping检测工具,支持多节点、多模式检测,覆盖全国及海外,数据精准、图表直观。浏览器即开即用,输入域名/IP三步完成检测,实时呈现延迟、丢包等关键指标,并提供优化建议,助个人、站长、运维人员快速定位网络问题,保障流畅体验。(239字)
714 1
|
5月前
|
人工智能 自然语言处理 安全
OpenClaw与QQ深度集成:打造智能对话机器人的全链路实践指南
本文以OpenClaw与QQ机器人集成为例,详解AI服务嵌入即时通讯的落地路径:涵盖轻量服务器一键部署、动态端口安全加固、双模式API计费配置、QQ通道对接及闭环验证方法,提供可复用的智能对话系统构建范式。
462 1
|
存储 API 对象存储
使用对象存储OSS实现内容分发加速
通过本教程的操作,您可以在OSS中创建bucket并上传数据,可以开通OSS传输加速对OSS数据进行加速访问,从而为游戏服务器分担下载请求,并为用户带来加速体验。
12068 28
使用对象存储OSS实现内容分发加速
|
5月前
|
SQL 机器学习/深度学习 自然语言处理
企业做智能问数,最容易被低估的不是模型,而是人工预置工作量
本文将从第三方视角出发,系统拆解当前主流智能问数路径的技术逻辑,对比不同厂商路线在人工预置维度上的差异,并结合实施交付的真实场景,分析企业在选择技术路线时应关注的核心权衡点。
|
9月前
|
消息中间件 缓存 NoSQL
【Redis进阶】不止是缓存!Redis的5种核心数据结构与实战场景全解析
本文深入浅出地解析了Redis五大核心数据结构:String、Hash、List、Set和ZSet,结合图解与实战场景,涵盖缓存、计数器、分布式锁、购物车、消息队列、排行榜等典型应用,助你摆脱“只会SET/GET”的困境,真正发挥Redis的高性能潜力。
|
10月前
|
安全 数据安全/隐私保护
隐形水印:让偷录者无处遁形的终极防线
视频会议时代,偷录偷拍成信息泄露重灾区。从国家安全到商业机密,风险无处不在。隐形水印技术为音视频嵌入唯一“数字指纹”,实现源头追溯,构建可防、可溯、可追责的安全闭环,筑牢会议信息安全防线。
386 2
|
10月前
|
API
Lua 的 Math 模块
这个库提供了基本的数学函数。 所以函数都放在表 math 中。 注解有 "integer/float" 的函数会对整数参数返回整数结果, 对浮点(或混合)参数返回浮点结果。 圆整函数(math.ceil, math.floor, math.modf) 在结果在整数范围内时返回整数,否则返回浮点数。
|
10月前
|
数据采集 JSON 前端开发
从Bing图片搜索JSON API直接获取数据
从Bing图片搜索JSON API直接获取数据