OC——Foundation—常用的类(1)字符串(NSString)

OC——Foundation—常用的类(1)字符串(NSString)

OC—Foundation中常用的类包括:字符串,集合,字典等
 
字符串:NSString
Java中string的常量是不可以改变的,stringBuild,和stringBuff中的字符串是可以改变的
OC中的NSString也是不可变的
  • 创建常量字符串
NSString *string = @“This is a String!”;

 
  • 创建空字符串,给予赋值
NSString *string = [[NSString alloc] init];
string = @“This is a String!”;

 
  • 通过字符串创建字符串
[[NSString alloc] initWithString:@“This is a String!”];
//或者[[NSString alloc] initWithFormat:@“My age is %i”,19];

  • 用标准c创建字符串
char *cString ="这是一个字符串”;
[[NSString alloc] initWithString:cString encoding:NSUTF8StringEncoding];
或者[[NSString alloc] initWithUTF8Sting:cString];
//字符串编码可以在NSString.h中查阅

通过alloc创建的字符串是需要释放的,用@赋值的字符串不需要释放;
 
用如下方法可以实现不需要管理内存:
NSString *str=[[NSString alloc] initWithString:@“this is a string”];
//这个创建str需要释放内存

NSString *str=[NSString stringWithString:@"this is a string"];
//这个创建str不需要释放内存

以上代码只是比较用,如果要同时使用,需要先释放掉前一行创建的对象,否则会造成内存泄露
 
从文本文件中读取文本:
NSString *path=@“/User/desktop/test.txt”;
nsstring *str=[NSString stringWithContentOfFile:path encoding:NSUTF8StringEncoding error:nil];

 
 
NSString的导出
NSString *path =@“/User/desktop/test.txt”;
NSString *str=@"123";
NSError *error;
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

其中atomically表示是否使用原子性:原子性意思就是,在写入文件的时候会创建一个临时文件,当所有内容都写入之后再把这些内容拷贝到目的文件。这样可以保证程序在写入出错的时候不会对目的文件造成破坏。
如果文件不存在会自动帮我们创建文件,如果文件夹不存在,则会报错。
 
NSString的大小写处理
  • -(NSString *)uppercaseString     全部转为大写字母
  • -(NSString *)lowercaseString      全部转为小写字母
  • -(NSString *)capitalizedString     首字母遍大写,其他字母都变小写
 
NSString的比较
  • -(BOOL)isEqualToString:(NSString *)aString                                                                                     

        比较两个字符串的内容是否相同,相同就返回YES,不同就返回NO

  • -(NSComparisonResult)compare:(NSString *)string
        逐个字符的进行比较,返回NSComparisonResult来显示比较结果
        NSComparisonResult是一个枚举,有3个值;
        NSOrderedAscending =-1L, NSOrderedSame, NSOrderedDescending
        如果左侧大于右侧,返回NSOrderedDescending,
        如果左侧小于右侧,返回NSOrderedAscending,
        否则返回NSOrderedSame
  • -(NSComparisonResult)caseInsensitiveCompare:(NSString *)string                                                

        忽略大小写进行比较,返回值于compare:一致

 
NSString中搜索字符串
-(BOOL)hasPrefix:(NSString *)aString是否以aString开头
-(BOOL)hasSuffix:(NSString *)aString是否以aString结尾
-(NSRange)rangeOfString:(NSString *)aString检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRange的location为-1,length为0
-(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask
可以产地一个mask参数,改变搜索方式
比如NSStringCompareOptions为NSBackwardsSearch表示从尾部开始搜索
-(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange 还可以用searchRange指定搜索范围
 
NSString的截取
  • -(NSString *)substringFromIndex:(NSUInteger)from                                                                          从指定位置from开始(包括指定位置的字符)到尾部
  • -(NSString *)substringToIndex:(NSUInteger)to                                                                                 从字符串的开头一致截取到指定的位置to,但不包括该字符
  • -(NSString *)substringWithRange:(NSRange)range                                                                                 按照所给出的NSRange从字符串中截取子串
  • -(NSArray *)componentsSeparatedByString:(NSString *)separator
        用separator为分隔符截取子串,返回一个装着所有子串的集合NSArray
 
 
NSString强制类型转换
  • -(double)doubleValue
  • -(float)floatValue
  • -(int)intValue
  • -(char *)UTF8String
 
 
NSMutableString
NSString是不可变的,不能删除字符或者添加字符。NSString有一个子类NSMutableString,称为可变字符串
创建可变字符串:

NSMutableString *str=[[NSMutableString alloc]initWithCapacity:10];
[str setString:@"1234"];
//拼接一个字符串
[str appendString:@"5678"];
//拼接字符串
[str appendFormat:@"age is %i,height is %.2f",24,1.75f];
//替换字符串
NSRange range=[str rangeOfString:@"height"];
[str replaceCharactersInRange:range withString:@"no"];
//插入字符串
[str insertString:@"abc" atIndex:2];

capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多
当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableString是NSString的子类,NSString能用的方法,NSMutableString都能使用
 
 
 

转载于:https://www.cnblogs.com/hqzxbb/p/4402424.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109495.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月5日 上午8:00
下一篇 2021年9月5日 上午9:00


相关推荐

  • XXE漏洞以及Blind XXE总结「建议收藏」

    XXE漏洞以及Blind XXE总结「建议收藏」转载请注明出处:http://blog.csdn.net/u0117215010、前言XXE漏洞是针对使用XML交互的Web应用程序的攻击方法,在XEE漏洞的基础上,发展出了BlindXXE漏洞。目前来看,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVGheader)应用比较广泛,此外,网上有一些在线XML格式…

    2022年5月10日
    101
  • 信息熵,条件熵,互信息的通俗理解

    信息熵,条件熵,互信息的通俗理解自信息 self information I x log p x 1 式中的 log 表示自然对数 如果用以 2 为底的对数 单位是比特 bit 上式是什么意思 p x 是指 x 发生的概率 I x 代表 x 所包含的信息量 考虑这么一个问题 马云破产以及马云获得全国首富这两个事件 那个包含的信息量大 当然是马云破产的信息量更大 因为它发生

    2026年3月18日
    2
  • 混合高斯背景建模原理_高斯图模型

    混合高斯背景建模原理_高斯图模型在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。对于摄像机运动的运动物体检测问题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动状态。对于摄像机固定的情形,当然也可以用光流法,但是

    2025年5月28日
    3
  • red hat enterprise linux 6

    red hat enterprise linux 6

    2021年8月30日
    57
  • 单片机c语言直接寻址 间接寻址,pic单片机教程之数据存储器的直接间接寻址方式…

    单片机c语言直接寻址 间接寻址,pic单片机教程之数据存储器的直接间接寻址方式…数据存储器构成数据存储器由特殊功能寄存器 SFR 和通用寄存器 GPR 组成 SFR 控制器件的操作 而 GPR 则是数据存储和改写的通用区域 SFR 和 GPR 数据存储区分成不同的存储区 GPR 区分成不同的存储区 以实现对超过 96 字节的通用 RAM 的寻址 SFR 是用来控制外设和内核功能的寄存器 STATUS 寄存器的存储区选择控制位 STATUS lt 7 5 gt 用于选择存储区 图 6 5 是数据存储器的构

    2026年3月17日
    1
  • 卸载dpkg安装的软件_ubuntu卸载deb软件

    卸载dpkg安装的软件_ubuntu卸载deb软件deb文件是linux发行版debian系统的安装包格式,还有像基于debian系统的发型版ubuntu等系统就是使用的deb格式安装包,我们可以使用dpkg命令进行安装管理这些deb安装包文件。方法/步骤这里我使用的ubuntu系统做演示,首先把deb文件放到一个文件夹中,例如我这里的dolphin_emu文件。在文件夹里右键“在终端打开”。使用dpkg命令进行安装…

    2022年10月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号