创建于完成: 2018/02/05

总览: http://www.cnblogs.com/lancgg/p/8404975.html

 字符串类
 简介

 字符码: Unicode 

NSString 生成了无法更改

Foundation/NSString.h

 NSString主要方法

(1)

Unicode字符串的操作

注: unichar是Unicode表现的一个字符的类型,不同于char

便利构造函数: 先自动呼出alloc的

- (id) initWithUTF8String: (const char*) bytes;

便利构造函数:

+ (id) stringWithUTF8String: (const char*) bytes;

 用和C一样以'\0'结尾的字符串生成
 - (__strong const char *) UTF8String;  返回编码为UTF-8的C字符串指针
 - (NSUInteger) length;

返回字符串长度

不同于C,不能用来计算需要的大小

(# TODO: check [?])

 - (unichar) characterAtIndex: (NSUInteger) index;  获取第index个的Unicode字符

- (id) initWithCharacters: (const unichar *) characters length: (NSUInteger) length

便利构造函数:

+ (id) stringWithCharacters: length:

 生成length长的以characters重复的字符串
 - (void) getCharacters: (unichar *) buffer range: (NSRange) aRange

把aRange指定的范围的字符串复制到buffer

注: 不会自动加'\0'

NSRange 开始位置和长度的结构体

buffer长度必须够

   

(2)

指定字符编码的变换

 NSStringEncoding类型

指定字符码

NSASCIIStringEncoding

 7位的ASCII字码

NSUTF8StringEncoding

Unicode字符的8位字码

UTF-8

NSMaxOsRomanStringEncoding

 日语的8位EUC字码
 NSShiftJISStringEncoding  日语的8位shiftJIS字码
   

- (id) initWithCString: (const char *) nullTerminatedCString

encoding: (NSStringEncoding) encoding

便利构造函数:

+ (id) stringWithCString: encoding:

注: encoding表示data的生成方法,生成的对象的生成方法是Unicode

通过指定编码的以'\0'结尾的字符串生成

 - (__strong const char *) cStringUsingEncoding: (NSStringEncoding) encoding

指定字码来转换,无法转换会抛出例外

getCString:MaxLength:encoding: 可以直接放到准备好的内存里

- (id) initWithData: (NSData *) data encoding: (NSStringEncoding) encoding

注: encoding表示data的生成方法,生成的对象的生成方法是Unicode

通过以encoding字码写的data来生成

类似的有

initWithBytes:length:encoding:

- (NSData *) dataUsingEncoding: (NSStringEncoding) encoding

只获取长度:

lengthOfBytesUsingEncoding:

把受体的字符串通过encoding编码后返回NSData,

无法转换返回nil

 - (BOOL) canBeConvertedToEncoding: (NSStringEncoding) encoding

能不能被指定的字码转换

可以用

availableStringEncodings来查看当前环境可用的encoding

URL字符化

- (NSString *) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding) encoding

String化

stringByReplacingPercentEscapesUsingEncoding:

把受体根据encoding来%化,用在URL的字符串表达上

都在Foundation/NSURL.h

   

(3)

根据格式生成字符串

 格式规则

格式规则和printf()里的一样

不同:

可用%@, NSString, 对象的description(NSString)

格式字符串也是NSString

注意: 用格式生成NSString时,格式修饰符的对象不会自动转型

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

便利构造函数:

stringWithFormat:

根据格式生成字符串

可变长度的参数, 最后加...

# TODO: Supply [10.2 可变长度的参数]

   

(4)

对比

 NSComparisionResult

enum _NSComparisionResult {
NSOrderedAscending = -, NSOrderedSame, NSOrderedDescending
}; typedef NSInteger NSComparisionResult;

相同返回NSOrderedSame, 小返回NSOrderedDescending, 大返回NSOrderedAscending

 - (NSComparisionResult) compare: (NSString *) aString 

字符串的比较, aString不能为nil

只是比较是否相同的话可用

- (BOOL) isEqualToString: (NSString *) aString

 - (NSComparisionResult) caseInsensitiveCompare: (NSString *) aString

无视大小写的比较

其他方法来比较的话用:compare:option:

 - (NSComparisionResult) localizedStandardCompare: (NSString *) aString  Mac的Finder里文件名排序相同的方法来比较
 - (BOOL) isEqualToString: (NSString *) aString  与指定NSString是否相同

- (BOOL) hasPrefix: (NSString *) aString

 开头是否和aString相同(是否有指定前缀)
 - (BOOL) hasSuffix: (NSString *) aString  结尾是否与aString相同
 commonPrefixWithString:options:  从开头取出相同的字符串
   
   

(5)

连接

 - (NSString *) stringByAppendingString: (NSString *) astring  把aString连接在最后
 - (NSString *) stringByAppendingFormat: (NSString *) format, ...  把根据格式生成的字符串连接在最后
   
   

(6)

子字符串

Objective-C NSString/NSMutableString的更多相关文章

  1. NSString&NSMutableString常用操作梳理(转)

    作者:弦苦 授权本站转载. 上一篇梳理了NSArray&NSMutableArray常用操作,这次来梳理一下Objective-C中每天都要用到的字符串处理类——NSString. Objec ...

  2. 关于NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary

    NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary 在 OC 中我们天天都要用,而我们要怎 ...

  3. NSString&NSMutableString常用操作梳理

    http://www.cocoachina.com/ios/20150724/12722.html 上一篇梳理了NSArray&NSMutableArray常用操作,这次来梳理一下Object ...

  4. [转] NSString / NSMutableString 字符串处理,常用代码

     原文 :  http://justcoding.iteye.com/blog/1405951 Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString , ...

  5. 【转】 NSString / NSMutableString 字符串处理,常用代码 (实例)

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  6. NSString / NSMutableString 字符串处理,常用代码 (实例)

    http://blog.csdn.net/likendsl/article/details/7417878 Objective-C 中核心处理字符串的类是 NSString 与 NSMutableSt ...

  7. NSString NSMutableString copy mutableCopy retain weak strong整合

    copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import ...

  8. NSString NSMutableString

    // NSString         //代开API文档         //Xcode -> help - Documentation and API Reference           ...

  9. Objective C NSString 编码成URL 特殊字符处理

    找了一下网上的教程都是使用类似以下代码,Xcode提示这个CoreFoundation不受ARC管理,所以折中的方式是添加__bridge. NSString *encodedValue = (__b ...

随机推荐

  1. python学习之-- logging模块

    logging模块功能:提供了标准的日志接口,可以通过它存储各种格式的日志.日志5个级别分:debug(),info(),warning(),error(),critical() logging.ba ...

  2. js删除数组对象中符合条件的数据

    var data = [{}, {}, {}, {Id:1}] var datawilldele = [];//2,4,5 data.forEach(function (v, i,arry) { if ...

  3. 洛谷——P2916 [USACO08NOV]为母牛欢呼Cheering up the Cows

    https://www.luogu.org/problem/show?pid=2916 题目描述 Farmer John has grown so lazy that he no longer wan ...

  4. 利用Cufon技术渲染文字的简单示例

    Cufon是一种能够根据指定的字体渲染文字的技术.今天试用了下,主要有几个步骤: 1.下载Cufon.js(http://cufon.shoqolate.com/generate/) 2.获取需要渲染 ...

  5. JAVA实验--统计文章中单词的个数并排序

    分析: 1)要统计单词的个数,就自己的对文章中单词出现的判断的理解来说是:当出现一个非字母的字符的时候,对前面的一部分字符串归结为单词 2)对于最后要判断字母出现的个数这个问题,我认为应该是要用到ma ...

  6. Java中文件和I/O

    以下内容引用自http://wiki.jikexueyuan.com/project/java/files-and-io.html: 在Java中java.io包含的每一个类几乎都要进行输入和输出操作 ...

  7. 教你如何查看CAD文件是哪个版本的来自http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html

    教你如何查看CAD文件是哪个版本的 http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html (2013-03-10 22:24:52) 转载▼ 标签: ...

  8. 【转载】在VS2008中使用WSE 3.0过程全记录

    WSE全称是Web Service Enhancement,提供了更好的安全性实现,以及大对象传输的设计. 有关WSE的一些介绍,如果不清楚,可以参考下面的链接 官方介绍:http://www.mic ...

  9. Spring学习笔记——Spring中lazy-init与abstract具体解释

    Spring的懒载入的作用是为了避免无谓的性能开销,就是当真正须要数据的时候才去运行数据的载入操作.不只在Spring中.我们在实际的编码过程中也应该借鉴这种思想,来提高我们程序的效率. 首先我们看一 ...

  10. hdoj-1242-Rescue【广搜+优先队列】

    Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...