首先理解内存空间分配NSString * str =@“456"
str为NSString *指针
 栈空间        str—>(ffc2ffc3) (NSString结构体类型指针存堆中地址)
  (ffc2    ffc3)两个字节           4
  (ffc3    ffc4)           5
    (ffc5    ffc6)           6
    (ffc7    ffc8)          nil
&str=ffc2    ffc3
*str=567  修改str指向内存空间的内容

NSString的创建

l创建常量字符

NSString*string= @"This is a String!";

l通过字符串创建字符串

[[NSString alloc]initWithString:@"This is a String!"];

//或者[[NSString alloc]initWithFormat:@"My age is %i", 17];

l用标准c创建字符

char*cString = "这是一串中文";

[[NSString alloc]initWithCString:cStringencoding:NSUTF8StringEncoding];

或者[[NSString alloc]initWithUTF8String:cString];

//字符串编码可以在NSString.h中查阅

l从文件中读取

NSError*error = nil;//用来记录错误信息

NSString*path =@"/Users/apple/Desktop/test.txt";//文件路径

NSString *string = [[NSString alloc]initWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:&error];

if(error){//文件读取失败

//"通俗易懂"的错误信息

NSString*desc = [errorlocalizedDescription];

NSLog(@"\n文件读取失败,错误信息如下:\n%@", desc);

}else{//文件读取成功

NSLog(@"\n文件读取成功,内容如下:\n%@", string);

}

//将中文字符编码转为NSStringEncoding格式的编码

// NSStringEncodingenc =CFStringConvertEncodingToNSStringEncoding(

kCFStringEncodingGB_18030_2000);

l从一个Url读取字符串

NSError *error = nil;//用来记录错误信息

NSURL *url = [NSURLURLWithString:@"http://www.baidu.com"];

NSString*string = [[NSString alloc]initWithContentsOfURL:url

encoding:NSUTF8StringEncodingerror:nil];

if(error) {//读取失败

//得到"通俗易懂"的错误信息

NSString *desc = [errorlocalizedDescription];

NSLog(@“\n读取失败,错误信息如下:\n%@", desc);

} else{//读取成功

NSLog(@“\n读取成功,内容如下:\n%@", string);

}

还有一些静态方法(都是autorelease)

l[NSStringstringWithUTF8String:"12345"];
l[NSStringstringWithFormat:@"My age is %i", 27];
l[NSStringstringWithCString:"12345"encoding:NSUTF8StringEncoding];
lNSString *path = @"/Users/apple/Desktop/test.txt”;

[NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];

lNSURL*url = [NSURLURLWithString:@"http://www.baidu.com"];

NSString*string = [NSStringstringWithContentsOfURL:urlencoding:NSUTF8StringEncodingerror:nil];


NSString的导出
l将字符串写入文件

NSString*string = @"我是字符串";

NSString*path= @"/Users/apple/Desktop/abc.txt";

[stringwriteToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

或者

NSString*urlPath= @"file:///Users/apple/Desktop/abc.txt";

NSURL *url= [NSURLURLWithString:urlPath];

[stringwriteToURL:urlatomically:YESencoding:NSUTF8StringEncodingerror:nil];

l- (NSString *)uppercaseString

全部转为大写字母

l- (NSString *)lowercaseString

全部转为小写字母

l- (NSString *)capitalizedString

首字母变大写,其他字母都变小写


NSString的比较
l- (BOOL)isEqualToString:(NSString *)aString

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

l- (NSComparisonResult)compare:(NSString *)string

逐个字符地进行比较,返回NSComparisonResult来显示比较结果.

NSComparisonResult是一个枚举,有3个值:

NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending

如果左侧大于右侧,返回NSOrderedDescending,

如果左侧小于右侧,返回NSOrderedAscending,

否则返回NSOrderedSame

l(NSComparisonResult)caseInsensitiveCompare:(NSString *)string

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


NSString搜索字符串
l- (BOOL)hasPrefix:(NSString *)aString

是否以aString开头

l- (BOOL)hasSuffix:(NSString *)aString

是否以aString结尾

l- (NSRange)rangeOfString:(NSString *)aString

检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRangelocation-1,length0

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

可以传递一个mask参数,改变搜索方式

比如NSStringCompareOptionsNSBackwardsSearch表示从尾部开始搜索

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange

还可以用searchRange指定搜索范围


NSString 的截取
l- (NSString *)substringFromIndex:(NSUInteger)from

指定位置from开始(包括指定位置的字)到尾部

l- (NSString *)substringToIndex:(NSUInteger)to

从字符串的开头一直截取到指定的位置to但不包括该位置的字符

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

按照所给出的NSRange字符串中截取子串

l- (NSArray *)componentsSeparatedByString:(NSString *)separator

separator为分隔符截取子串返回一个装着所有子串的集合NSArray


NSString与路径
l+ (NSString *)pathWithComponents:(NSArray *)components

components中的字符串按顺序拼成一个路径

l- (NSArray *)pathComponents

将一个路径分解成一个装着每一个目录的NSArray

l- (BOOL)isAbsolutePath

是否为绝对路径

l- (NSString *)lastPathComponent

获得最后一个目录

l- (NSString *)stringByDeletingLastPathComponent

删除最后一个目录

l- (NSString *)stringByAppendingPathComponent:(NSString *)str

在路径的后面拼接一个目录


NSString与拓展名
l- (NSString *)pathExtension

获得拓展名

l- (NSString *)stringByDeletingPathExtension

删除尾部的拓展名

l- (NSString *)stringByAppendingPathExtension:(NSString *)str

在尾部添加一个拓展名


NSString的其他用法
l- (NSUInteger)length

返回字符串的长度(字符个数)

l- (unichar)characterAtIndex:(NSUInteger)index

返回index位置对应的字符

l(double)doubleValue
l- (float)floatValue
l- (int)intValue
l(char *)UTF8String

转为C语言中的字符串

===================================

NSMutableString

lNSString是不可变的,不能删除字符或者添加字符NSString有一个子类NSMutableString,称为可变字符串
l创建可变字符串的常用方法
u- (id)initWithCapacity:(NSUInteger)capacity
u(id)stringWithCapacity:(NSUInteger)capacity

capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多

l当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableStringNSString的子类,NSString能用的方法,NSMutableString都能使用

NSMutableString的常用处理
l- (void)setString:(NSString *)aString

初始化完毕后可以使用此方法设置字符串的内容

l(void)appendString:(NSString *)aString
l- (void)appendFormat:(NSString *)format, ...

这两个方法都是在尾部拼接一段字符串

l- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString

range位置的字符串替换为aString

l- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc

loc这个位置插入aString(aString的起始位置是就loc)

l- (void)deleteCharactersInRange:(NSRange)range

删除range这个范围的字符串(经常跟rangeOfString:一起使用删除特定的字符串)

==================================

首先理解内存空间分配    NSString * str =@“456"

str为NSString *指针
 栈空间        str—>(ffc2ffc3) (NSString结构体类型指针存堆中地址)
  (ffc2    ffc3)两个字节           4
  (ffc3    ffc4)           5
    (ffc5    ffc6)           6
    (ffc7    ffc8)          nil
&str=ffc2    ffc3
*str=567  修改str指向内存空间的内容

NSString的创建

l创建常量字符

NSString*string= @"This is a String!";

l通过字符串创建字符串

[[NSString alloc]initWithString:@"This is a String!"];

//或者[[NSString alloc]initWithFormat:@"My age is %i", 17];

l用标准c创建字符

char*cString = "这是一串中文";

[[NSString alloc]initWithCString:cStringencoding:NSUTF8StringEncoding];

或者[[NSString alloc]initWithUTF8String:cString];

//字符串编码可以在NSString.h中查阅

l从文件中读取

NSError*error = nil;//用来记录错误信息

NSString*path =@"/Users/apple/Desktop/test.txt";//文件路径

NSString *string = [[NSString alloc]initWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:&error];

if(error){//文件读取失败

//"通俗易懂"的错误信息

NSString*desc = [errorlocalizedDescription];

NSLog(@"\n文件读取失败,错误信息如下:\n%@", desc);

}else{//文件读取成功

NSLog(@"\n文件读取成功,内容如下:\n%@", string);

}

//将中文字符编码转为NSStringEncoding格式的编码

// NSStringEncodingenc =CFStringConvertEncodingToNSStringEncoding(

kCFStringEncodingGB_18030_2000);

l从一个Url读取字符串

NSError *error = nil;//用来记录错误信息

NSURL *url = [NSURLURLWithString:@"http://www.baidu.com"];

NSString*string = [[NSString alloc]initWithContentsOfURL:url

encoding:NSUTF8StringEncodingerror:nil];

if(error) {//读取失败

//得到"通俗易懂"的错误信息

NSString *desc = [errorlocalizedDescription];

NSLog(@“\n读取失败,错误信息如下:\n%@", desc);

} else{//读取成功

NSLog(@“\n读取成功,内容如下:\n%@", string);

}

还有一些静态方法(都是autorelease)

l[NSStringstringWithUTF8String:"12345"];
l[NSStringstringWithFormat:@"My age is %i", 27];
l[NSStringstringWithCString:"12345"encoding:NSUTF8StringEncoding];
lNSString *path = @"/Users/apple/Desktop/test.txt”;

[NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];

lNSURL*url = [NSURLURLWithString:@"http://www.baidu.com"];

NSString*string = [NSStringstringWithContentsOfURL:urlencoding:NSUTF8StringEncodingerror:nil];


NSString的导出
l将字符串写入文件

NSString*string = @"我是字符串";

NSString*path= @"/Users/apple/Desktop/abc.txt";

[stringwriteToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

或者

NSString*urlPath= @"file:///Users/apple/Desktop/abc.txt";

NSURL *url= [NSURLURLWithString:urlPath];

[stringwriteToURL:urlatomically:YESencoding:NSUTF8StringEncodingerror:nil];

l- (NSString *)uppercaseString

全部转为大写字母

l- (NSString *)lowercaseString

全部转为小写字母

l- (NSString *)capitalizedString

首字母变大写,其他字母都变小写


NSString的比较
l- (BOOL)isEqualToString:(NSString *)aString

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

l- (NSComparisonResult)compare:(NSString *)string

逐个字符地进行比较,返回NSComparisonResult来显示比较结果.

NSComparisonResult是一个枚举,有3个值:

NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending

如果左侧大于右侧,返回NSOrderedDescending,

如果左侧小于右侧,返回NSOrderedAscending,

否则返回NSOrderedSame

l(NSComparisonResult)caseInsensitiveCompare:(NSString *)string

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


NSString搜索字符串
l- (BOOL)hasPrefix:(NSString *)aString

是否以aString开头

l- (BOOL)hasSuffix:(NSString *)aString

是否以aString结尾

l- (NSRange)rangeOfString:(NSString *)aString

检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRangelocation-1,length0

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

可以传递一个mask参数,改变搜索方式

比如NSStringCompareOptionsNSBackwardsSearch表示从尾部开始搜索

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange

还可以用searchRange指定搜索范围


NSString 的截取
l- (NSString *)substringFromIndex:(NSUInteger)from

指定位置from开始(包括指定位置的字)到尾部

l- (NSString *)substringToIndex:(NSUInteger)to

从字符串的开头一直截取到指定的位置to但不包括该位置的字符

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

按照所给出的NSRange字符串中截取子串

l- (NSArray *)componentsSeparatedByString:(NSString *)separator

separator为分隔符截取子串返回一个装着所有子串的集合NSArray


NSString与路径
l+ (NSString *)pathWithComponents:(NSArray *)components

components中的字符串按顺序拼成一个路径

l- (NSArray *)pathComponents

将一个路径分解成一个装着每一个目录的NSArray

l- (BOOL)isAbsolutePath

是否为绝对路径

l- (NSString *)lastPathComponent

获得最后一个目录

l- (NSString *)stringByDeletingLastPathComponent

删除最后一个目录

l- (NSString *)stringByAppendingPathComponent:(NSString *)str

在路径的后面拼接一个目录


NSString与拓展名
l- (NSString *)pathExtension

获得拓展名

l- (NSString *)stringByDeletingPathExtension

删除尾部的拓展名

l- (NSString *)stringByAppendingPathExtension:(NSString *)str

在尾部添加一个拓展名


NSString的其他用法
l- (NSUInteger)length

返回字符串的长度(字符个数)

l- (unichar)characterAtIndex:(NSUInteger)index

返回index位置对应的字符

l(double)doubleValue
l- (float)floatValue
l- (int)intValue
l(char *)UTF8String

转为C语言中的字符串

===================================

NSMutableString

lNSString是不可变的,不能删除字符或者添加字符NSString有一个子类NSMutableString,称为可变字符串
l创建可变字符串的常用方法
u- (id)initWithCapacity:(NSUInteger)capacity
u(id)stringWithCapacity:(NSUInteger)capacity

capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多

l当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableStringNSString的子类,NSString能用的方法,NSMutableString都能使用

NSMutableString的常用处理
l- (void)setString:(NSString *)aString

初始化完毕后可以使用此方法设置字符串的内容

l(void)appendString:(NSString *)aString
l- (void)appendFormat:(NSString *)format, ...

这两个方法都是在尾部拼接一段字符串

l- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString

range位置的字符串替换为aString

l- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc

loc这个位置插入aString(aString的起始位置是就loc)

l- (void)deleteCharactersInRange:(NSRange)range

删除range这个范围的字符串(经常跟rangeOfString:一起使用删除特定的字符串)

==================================

20-NSString-foundation相关推荐

  1. IOS学习---OC基础学习(Foundation)

    Foundation框架: 包含许多常见的数据类型 是其他所有Ios框架的基础结构体: NSRange: 范围:成员变量有location(位置).length(长度) @"i love o ...

  2. 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 三 NSArray

    2019独角兽企业重金招聘Python工程师标准>>> 1 int main(int argc, const char * argv[]) { 2 @autoreleasepool ...

  3. iOS中几种数据持久化方案总结

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  4. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇-UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import <Foundation/Foundation.h&g ...

  5. OC中给我们提供的一个技术:谓词(NSPredicate).note

    OC中给我们提供的一个技术:谓词(NSPredicate) OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起 ...

  6. 计算沙盒下文件夹内容大小 清空沙盒 文件 目录

    1 +(float)fileSizeForDir:(NSString*)path//计算文件夹下文件的总大小 2 3 { 4 5 NSFileManager *fileManager = [[NSFi ...

  7. 开源中国iOS客户端学习

    开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html ...

  8. iOS身份证的正则验证

    在ios项目的开发中可能很多地方都需要用到身份证校验,一般在开发的时候很多人都是直接百度去网上荡相关的正则表达式和校验代码,但是网上疯狂粘贴复制的校验代码本身也可能并不准确,可能会有风险,比如2013 ...

  9. AFNetworking官网文档及翻译

    AFNetworking2.4.1解析 1.官网文档外加点中文注释 AFNetworking官网(点击进入) AFNetworking翻译注释 Architecture(结构) NSURLConnec ...

  10. 黑马程序员16——OC之Fundation(NSNumber)

    #import <Foundation/Foundation.h> int main() {     // @20  将 20包装成一个NSNumber对像               N ...

最新文章

  1. oracle12c无法访问em精简版,Oracle12C的EM无法访问怎么办?
  2. Windows Azure Storage (10) Windows Azure 上的托管服务CDN (下) Hosted Service
  3. 微服务组件记事本:本地搭建Skywalking
  4. docker – 你应该知道的10件事
  5. 数据挖掘—Apriori算法(Java实现)
  6. 【华为云实战开发】12.如何在云端快速开展Swagger接口测试
  7. newInstance() 和 new 有什么区别
  8. C语言题目:输入角度a,输出a的正弦值(sin a)
  9. 清华大学c语言程序设计课件,c语言清华大学课件
  10. C# 把word转换成txt
  11. 台式计算机硬盘的安装位置,台式电脑硬盘怎么安装_台式电脑硬盘安装方法-win7之家...
  12. 自定义实现微信通讯录效果View
  13. 数据中心架构,如何节省运营成本,机房冷却方面减少压力?
  14. 2023年推荐几款开源或免费的web应用防火墙
  15. 3D打印技术之切片引擎(7)
  16. 新加坡环球影城:新加坡亲子游一日游好去处
  17. 首师大附中科创教育平台 我的刷题记录 0313 50111117海岛帝国:诞辰之日
  18. SRT字幕的颜色以及一些特效的设置
  19. MATLAB--数字图像处理 车牌识别之简易识别程序
  20. 共路信令(CCS),随路信令(CAS)简介

热门文章

  1. 基于Java方式如何实现数据同步
  2. python去掉空格常用方式
  3. 多孔石墨烯基纳米材料Lammps实现(复现SCIENCE ADVANCES)
  4. cocos2d动作家族族谱
  5. Pascal基础(七)-Pascal泛型
  6. OMX Codec介绍
  7. 魔百盒CM201-2-全套通用-免拆机-刷机固件
  8. Web前端的路该怎么走?
  9. linux的scp命令用不了,scp命令及使用过程中常见问题的解决方案
  10. 学生成绩管理系统的设计-实践周作业