当前位置: 首页 > news >正文

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];


相关文章:

  • 公司CEO和我说:在系统优化的时候,不要轻易用多线程
  • phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)
  • 快速理解工厂方法模式,及其在源码中的应用
  • 线上报了内存溢出异常,又不完全是内存溢出
  • 用代码告诉你“问世间情为何物,直教人生死相许”
  • 互联网公司的完整开发流程是怎样的?
  • 如何在SpringBoot启动时执行初始化操作,两个简单接口就可以实现
  • BZOJ4584 : [Apio2016]赛艇
  • 查准考证网站卡了整整一个小时进不去,被抢票支配的恐惧又来了
  • 【C#公共帮助类】 ToolsHelper帮助类
  • 这次终于把Spring的监听器讲明白了
  • jquery ajax分页 js对象
  • 详解单例模式及其在Sping中的最优实践
  • Magento Shell
  • 深入了解ElasticSearch的Nested数据类型
  • [译]如何构建服务器端web组件,为何要构建?
  • JavaScript 一些 DOM 的知识点
  • js算法-归并排序(merge_sort)
  • PAT A1092
  • Python利用正则抓取网页内容保存到本地
  • SpingCloudBus整合RabbitMQ
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • ucore操作系统实验笔记 - 重新理解中断
  • 前端面试之闭包
  • 如何胜任知名企业的商业数据分析师?
  • 数组的操作
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​什么是bug?bug的源头在哪里?
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #HarmonyOS:Web组件的使用
  • #include到底该写在哪
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (论文阅读40-45)图像描述1
  • (三)uboot源码分析
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET分布式缓存Memcached从入门到实战
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET使用存储过程实现对数据库的增删改查
  • .net项目IIS、VS 附加进程调试
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .sh
  • :中兴通讯为何成功
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [100天算法】-二叉树剪枝(day 48)