前言

	@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
@interface NSMutableString : NSString

1、不可变字符串的创建

	// 直接创建不可变字符串
/*
在 OC 中,使用 @"XXX" 格式定义的字符串,是保存在常量区的,只要内容相同,内存地址就一致
*/
NSString *string1 = @"bei jing huan ying nin"; // 对象方法创建字符串 NSString *string2 = [[NSString alloc] init]; // 用另一个字符串初始化当前字符串,和 string1 的地址相同
NSString *string3 = [[NSString alloc] initWithString:string1]; // 通过格式化控制初始化字符串
NSString *string4 = [[NSString alloc] initWithFormat:@"age is %d, name is %@", 18, @"chen chao"]; // 类方法创建字符串 NSString *string5 = [NSString string]; // 用另一个字符串初始化当前字符串,和 string1 的地址相同
NSString *string6 = [NSString stringWithString:string1]; // 通过格式化控制初始化字符串
NSString *string7 = [NSString stringWithFormat:@"age is %d, name is %@", 18, @"chen chao"]; // 由 C 语言的字符串创建字符串
NSString *string8 = [[NSString alloc] initWithCString:"bei jing nin hao" encoding:NSUTF8StringEncoding];
NSString *string9 = [[NSString alloc] initWithUTF8String:"bei jing huan ying nin"]; NSString *string10 = [NSString stringWithCString:"bei jing nin hao" encoding:NSUTF8StringEncoding];
NSString *string11 = [NSString stringWithUTF8String:"bei jing huan ying nin"]; // 从 文件 创建字符串
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"]; NSString *string12 = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
NSString *string13 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]; // 从 Url 创建字符串
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; NSString *string14 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:NULL];
NSString *string15 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:NULL];

2、字符串长度计算

	NSString *str1 = @"zhou dong yu";

	// 计算字数长度,不是字符长度
NSUInteger length = [str1 length];

3、字符串成员的引用(取字符)

	NSString *str1 = @"zhou dong yu";

	// 取第 4 个字符
unichar character = [str1 characterAtIndex:3];

4、字符串的拼接

	NSString *str1 = @"chen chao ";
NSString *str2 = @"shuai"; // stringByAppendingString
NSString *str3 = [str1 stringByAppendingString:str2]; // stringByAppendingFormat
NSString *str4 = [str1 stringByAppendingFormat:@"%@", str2];

5、字符串比较

	NSString *str1 = @"chen chao";
NSString *str2 = @"CHEN CHAO"; // isEqualToString BOOL bl = [str1 isEqualToString:str2]; if (bl) { // 相等
NSLog(@"str1 = str2");
}
else { // 不等
NSLog(@"str1 != str2");
} // compare NSComparisonResult result1 = [str1 compare:str2]; if (result1 == NSOrderedAscending) { // 小于 -1
NSLog(@"str1 < str2");
}
else if (result1 == NSOrderedSame){ // 等于 0
NSLog(@"str1 = str2");
}
else{ // 大于 1 NSOrderedDescending
NSLog(@"str1 > str2");
} // caseInsensitiveCompare // 忽略大小写比较 NSComparisonResult result2 = [str1 caseInsensitiveCompare:str2]; if (result2 == NSOrderedAscending) { // 小于 -1
NSLog(@"str1 < str2");
}
else if (result2 == NSOrderedSame){ // 等于 0
NSLog(@"str1 = str2");
}
else{ // 大于 1 NSOrderedDescending
NSLog(@"str1 > str2");
}

6、字符串前缀和后缀的判断

	NSString *fileName = @"file.txt";

	// 前缀
BOOL bl1 = [fileName hasPrefix:@"file"]; // 后缀
BOOL bl2 = [fileName hasSuffix:@".txt"];

7、字符串大小写字符的转换

	NSString *str = @"chEN Chao";

	// 转大写
NSString *str1 = [str uppercaseString]; // 转小写
NSString *str2 = [str lowercaseString]; // 单词首字母大写
NSString *str3 = [str capitalizedString];

8、字符串转数字

	NSString *str = @"12306";

	int intValue = [str intValue];

	double doubleValue = [str doubleValue];

	float floatValue = [str floatValue];

	BOOL boolValue = [str boolValue];

	NSInteger integerValue = [str integerValue];

	long long longLongValue = [str longLongValue];

9、在字符串中查找子串的位置

	NSString *str1 = @"bei jing nin hao nin hao";
NSString *str2 = @"ninn"; // 1、从前往后查找,找到第一个即停止查找 NSRange range1 = [str1 rangeOfString:str2]; // 或者 if(range1.length == 0)
if (range1.location == NSNotFound) { NSLog(@"没有找到 %@", NSStringFromRange(range1));
}
else{ // location 位置,length 长度
NSLog(@"%lu %lu", range1.location, range1.length);
} // 2、条件查找 /*
NSCaseInsensitiveSearch = 1, // “A”等同于“a”,不分大小写查找
NSLiteralSearch = 2, // Unicode 的点对点比较。它只在所有字符都用相同的方式组成的情况下才会返回相等。
NSBackwardsSearch = 4, // 在字符串的末尾开始反向搜索
NSAnchoredSearch = 8, // 只考虑搜索的起始点(单独使用)或终止点(当与 NSBackwardsSearch 结合使用时)。
这个方法可以用来检查前缀或者后缀,以及大小写不敏感(case-insensitive)或者
音调不敏感(diacritic-insensitive)的比较。 NSNumericSearch = 64, // 它对字符串里的数字排序 NSDiacriticInsensitiveSearch = 128, // “A” 等同于 “Å” 等同于 “Ä.”
NSWidthInsensitiveSearch = 256, // 一些东亚文字(平假名和片假名)有全宽与半宽两种形式
NSForcedOrderingSearch = 512,
NSRegularExpressionSearch = 1024 // 使用正则表达式搜索
*/ // 从后往前查找,找到第一个即停止查找
NSRange range2 = [str1 rangeOfString:str2 options:NSBackwardsSearch]; if (range2.location == NSNotFound) {
NSLog(@"没有找到 %@", NSStringFromRange(range2));
} else {
NSLog(@"%lu %lu", range2.location, range2.length);
} // 3、在某个范围内查找 // 查找范围
NSRange range = {8, 10}; NSRange range3 = [str1 rangeOfString:str2 options:NSCaseInsensitiveSearch range:range]; if (range3.location == NSNotFound) {
NSLog(@"没有找到 %@", NSStringFromRange(range3));
} else {
NSLog(@"%lu %lu", range3.location, range3.length);
}

10、字符串子串的提取(取子串)

	NSString *str = @"今天天气真不错,是风和日丽的,我们下午没有课,是心情也不错";

	// 从某个位置开始到结尾
NSString *str1 = [str substringFromIndex:17]; // 从开始到某个位置
NSString *str2 = [str substringToIndex:7]; // 某个范围内
NSRange range = {7, 10};
NSString *str3 = [str substringWithRange:range]; NSRange range1 = [str rangeOfString:@"我们下午没有课"];
NSString *str4 = [str substringFromIndex:range1.location];

11、字符串切割/组合

	NSString *str1 = @"chen$chao$ni$hao$ma";
NSString *str2 = @"bei$jing#ni@hao&ma";
NSString *str3 = @"Users/JHQ0228/Desktop"; // 字符串 按照字符 切割
NSArray *arr1 = [str1 componentsSeparatedByString:@"$"]; // 字符串 按照字符集 切割
NSArray *arr2 = [str2 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"$#@&"]]; // 将字符串 路径分割
/*
自动按照 "/" 分割字符串
*/
NSArray *arr3 = [str3 pathComponents]; // 字符串 组合
NSString *str4 = [arr1 componentsJoinedByString:@" "];
NSString *str5 = [arr2 componentsJoinedByString:@" "]; // 字符串 路径组合
/*
将数组中的元素自动组合成路径,在每个元素之间自动加上 “/”
*/
NSString *str6 = [NSString pathWithComponents:arr3];

12、可变字符串的创建

    // 不可变字符串中有的方法

	    NSMutableString *str1 = [[NSMutableString alloc] init];

	    // 和 str1 的地址不同
NSMutableString *str2 = [[NSMutableString alloc] initWithString:str1]; // 和 str1 的地址不同
NSMutableString *str3 = [NSMutableString stringWithString:str1]; // 对象方法创建
/*
创建指定长度字符串,预先分配存储空间,提高效率,字符串实际长度可大于指定的长度
*/
NSMutableString *str4 = [[NSMutableString alloc] initWithCapacity:0]; // 类方法创建
/*
创建指定长度字符串,预先分配存储空间,提高效率,字符串实际长度可大于指定的长度
*/
NSMutableString *str5 = [NSMutableString stringWithCapacity:0];

13、字符串的添加

	NSMutableString *str = [NSMutableString stringWithCapacity:0];

	// 追加
[str appendString:@"bei jing"]; // 格式化追加
[str appendFormat:@", age is %d", 18]; // 插入
[str insertString:@" ren min" atIndex:8];

14、字符串修改(覆盖重写)

	NSMutableString *str = [NSMutableString stringWithFormat:@"%@", @"我是大大的好人"];

	// 修改整个字符串(覆盖重写)
[str setString:@"bei jing huan ying nin"];

15、字符串的删除

	NSMutableString *str = [NSMutableString stringWithFormat:@"%@", @"bei jing ren min huan ying nin"];

	NSRange range = [str rangeOfString:@"ren min "];
[str deleteCharactersInRange:range];

16、字符串替换

	NSMutableString *str1 = [NSMutableString stringWithFormat:@"%@", @"bei jing ren min huan ying nin"];

	// 替换字符串
[str1 replaceCharactersInRange:[str1 rangeOfString:@"huan ying nin"] withString:@"ni hao ma"]; // 查找并替换字符串
[str1 replaceOccurrencesOfString:@"i" withString:@"X" options:NSLiteralSearch range:NSMakeRange(0, [str1 length])]; /*
NSCaseInsensitiveSearch = 1, // “A”等同于“a”,不分大小写查找
NSLiteralSearch = 2, // Unicode 的点对点比较。它只在所有字符都用相同的方式组成的情况下才会返回相等。
NSBackwardsSearch = 4, // 在字符串的末尾开始反向搜索
NSAnchoredSearch = 8, // 只考虑搜索的起始点(单独使用)或终止点(当与 NSBackwardsSearch 结合使用时)。
这个方法可以用来检查前缀或者后缀,以及大小写不敏感(case-insensitive)或者
音调不敏感(diacritic-insensitive)的比较。
NSNumericSearch = 64, // 它对字符串里的数字排序
NSDiacriticInsensitiveSearch = 128, // “A” 等同于 “Å” 等同于 “Ä.”
NSWidthInsensitiveSearch = 256, // 一些东亚文字(平假名和片假名)有全宽与半宽两种形式
NSForcedOrderingSearch = 512,
NSRegularExpressionSearch = 1024 // 使用正则表达式搜索
*/

17、字符串的导出

	// 文件路径
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/string.txt"]; // 待导出字符串
NSString *str = @"bei jing ni hao"; // 导出字符串 /*
- (BOOL)writeToFile:(NSString *)path
atomically:(BOOL)useAuxiliaryFile
encoding:(NSStringEncoding)enc
error:(NSError **)error; atomically:原子性,
YES:原子性操作,数据写入文件时先写入临时文件,待数据全部写入临时文件后,再创建并将数据
从临时文件全部剪切到目标文件中。若写入过程中(指往临时文件中写入)发生错误,会删除临时文件。
NO:非原子性操作,数据写入文件时直接创建并写入目标文件。
若写入过程中发生错误,会停止写入,不会删除目标文件,并且不会删除已写入的数据。
error:错误数据。error == nil 时写入成功。 文件不存在时会自动创建,文件夹不存在时会写入错误。
*/ // 不判断是否写入成功 [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil]; // 判断是否写入成功 NSError *error; [str writeToFile:[NSHomeDirectory() stringByAppendingString:@"/Desktop/str/string.txt"]
atomically:YES encoding:NSUTF8StringEncoding
error:&error]; if (error) { NSLog(@"写入失败:%@", error); // 打印主要错误信息
NSLog(@"写入失败:%@", [error localizedDescription]);
} else {
NSLog(@"写入成功");
}

18、OC 字符串与 C 字符串的相互转换

	// OC 字符串转 C 字符串
const char *CString = [@"bei jing ni hao" UTF8String]; // C 字符串转 OC 字符串
NSString *OCString1 = [[NSString alloc] initWithCString:"ni hao" encoding:NSUTF8StringEncoding];
NSString *OCString2 = [[NSString alloc] initWithUTF8String:"ni hao"]; NSString *OCString3 = [NSString stringWithCString:"ni hao" encoding:NSUTF8StringEncoding];
NSString *OCString4 = [NSString stringWithUTF8String:"ni hao"];

19、NSString 与 NSData 的相互转换

	NSString *string = @"bei jing nin hao";

	// NSString 转 NSData
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; // data 类型数据以十六进制的形式打印出
NSLog(@"%@", data); // data 类型数据以字符串的形式打印出
NSLog(@"%s", data.bytes); // NSData 转 NSString
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

20、NSString 与 NSNumber 的相互转换

	NSNumber *num1 = @10.456;

	// NSNumber 转换 NSString
NSString *str = [num1 stringValue]; // NSString 转 NSNumber
NSNumber *num2 = [NSNumber numberWithFloat:[str floatValue]];

21、NSString 与 NSDate 的相互转换

	NSDateFormatter *dfm = [[NSDateFormatter alloc] init];
dfm.dateFormat = @"yyyy年MM月dd日 HH点mm分ss秒";
dfm.locale = [NSLocale localeWithLocaleIdentifier:@"GMT+8"]; // NSString 转 NSDate
NSDate *date = [dfm dateFromString:@"2016年05月24日 17点38分03秒"]; // NSDate 转 NSString
NSString *str = [dfm stringFromDate:date];

22、NSString 与 Class 的相互转换

	// NSString 转 Class
Class ClassName = NSClassFromString(@"Student"); Student *stu = [[ClassName alloc] init];
[stu studentTest]; // Class 转 NSString
NSString *strintFromClass = NSStringFromClass([Student class]);

23、NSString 与 方法名 的相互转换

	// NSString 转 方法名
SEL selName = NSSelectorFromString(@"studentTest"); // 消除 performSelector: 方法警告
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" Student *stu = [[Student alloc] init];
[stu performSelector:selName]; #pragma clang diagnostic pop // 方法名 转 NSString
NSString *stringFromSel = NSStringFromSelector(@selector(studentTest));

24、NSString 与 NSProtocol 的相互转换

	// NSString 转 NSProtocol
Protocol *ptlName = NSProtocolFromString(@"NSCopying"); Student *stu = [[Student alloc] init];
BOOL conforms = [stu conformsToProtocol:ptlName]; // NSProtocol 转 NSString
NSString *stringFromProtocol = NSStringFromProtocol(@protocol(NSCopying));

25、NSString 与 NSRange 的相互转换

	NSRange range4 = NSMakeRange(9, 4);

	// NSRange 转 NSString
NSString *stringFronRange = NSStringFromRange(range4); // NSString 转 NSRange
NSRange range5 = NSRangeFromString(stringFronRange);

26、NSString 与 NSPoint 的相互转换

	NSPoint point5 = NSMakePoint(9, 4);

	// NSPoint 转 NSString
NSString *stringFronPoint = NSStringFromPoint(point5); // NSString 转 NSPoint
NSPoint point6 = NSPointFromString(stringFronPoint);

27、NSString 与 NSSize 的相互转换

	NSSize size5 = NSMakeSize(9, 4);

	// NSSize 转 NSString
NSString *stringFronSize = NSStringFromSize(size5); // NSString 转 NSSize
NSSize size6 = NSSizeFromString(stringFronSize);

28、NSString 与 NSRect 的相互转换

	NSRect rect5 = NSMakeRect(9, 4, 4, 9);

	// NSRect 转 NSString
NSString *stringFronRect = NSStringFromRect(rect5); // NSString 转 NSRect
NSRect rect6 = NSRectFromString(stringFronRect);

29、生成随机数

	// 生成 15 位长度的数字字母组合的随机数
- (NSString *)generateTradeNO { static int kNumber = 15; NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSMutableString *resultStr = [[NSMutableString alloc] init];
srand((unsigned)time(0));
for (int i = 0; i < kNumber; i++)
{
unsigned index = rand() % [sourceStr length];
NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
[resultStr appendString:oneStr];
} return resultStr;
}

iOS - OC NSString 字符串的更多相关文章

  1. OC NSString(字符串)

    OC NSString(字符串) 多行文字字面量 NSString * string = @"abC" @"DEF" @"hjk" @&qu ...

  2. OC之字符串 NSString与NSMutableString

    一.NSString 不可变字符串的操作1)将字符串常量对象直接赋值给字符串引用 NSString *str1=@"hello"; 字符串对象的输出格式:NSLog(@" ...

  3. iOS中的字符串NSString

    创建一个字符串对象: NSstring * str1 = @"hello world"; NSString * str = [[NSString alloc]initWithStr ...

  4. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  5. iOS不可变字符串的所有操作

    可以直接复制代码即可运行看看结果,方便理解 //NSString //OC字符串不能用printf输出 //但是遗憾的是OC没有一个从终端读取数据的方式,需要使用scanf读取C字符串然后转换成OC的 ...

  6. OC基础--字符串

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  7. iOS十六进制和字符串的相互转换

    转换代码,崩溃日志有些是十六进制 NSString *dictString = [dict JSONFragment];//组合成的 dictString==={"content" ...

  8. NSString字符串

    要把 “2011-11-29” 改写成 “2011/11/29”一开始想用ios的时间格式,后来用NSString的方法搞定. [string stringByReplacingOccurrences ...

  9. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

随机推荐

  1. UIView完全置顶的方法

    一般来说,若需要独立添加一个UIView,使其覆盖于整个应用窗口之上,是这样实现的: AppDelegate *app = (AppDelegate *)[[UIApplication sharedA ...

  2. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.8.Datepicker控件

    默认datepicker的安装启用 探索它的配置选项 安装启用一个触发按钮 配置一个供选择的动画 dateFormat选项 简单的国际化 多月datepicker 日期范围选择 datepicker的 ...

  3. centos7.0 没有netstat 和 ifconfig命令问题

    yum install wget 运行  yum install net-tools  就OK了 默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此.所以这里就不介绍OpenSSH的 ...

  4. php单例模式是怎么实现的呢

    <?php /** * 设计模式之单例模式 * $_instance必须声明为静态的私有变量 * 构造函数和析构函数必须声明为私有,防止外部程序new * 类从而失去单例模式的意义 * getI ...

  5. PHP处理CSV表格文件的常用操作方法是怎么样呢

    php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...

  6. 《深入浅出MFC:》

    callback函数必须是static的,才能去除隐藏的this指针.

  7. IE6下 input 背景图滚动问题及标签规范

    ie6 背景图滚动问题: <title>ie6下input背景图滚动问题</title> <style> .box{ height:20px; width:300p ...

  8. 转载-python学习笔记之常用模块用法分析

    内置模块(不用import就可以直接使用)   常用内置函数   help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(ob ...

  9. 基于PowerShell 3.0的web接口测试

    对于web接口测试,做一下总结. 接口测试总结 1. 接口url格式:http://www.xxx.com/a/bbb.html: 2. 接口url后面接的参数格式:“?参数名=参数值&参数名 ...

  10. N-gram介绍

    在实际应用中,我们经常需要解决这样一类问题:如何计算一个句子的概率?如: 机器翻译:P(high winds tonite) > P(large winds tonite) 拼写纠错:P(abo ...