OC的字符串时经常使用到的,今天我对于OC字符串做一个简单的总结,如果有错误之处,麻烦留言指正。感谢!

  NSString是一个不可变长度的字符串对象。表示它初始化以后,你不能改变该变量所分配的内存中的值,但你可以重新分配该变量所处的内存空间。

  下面就从字符串NSString的创建开始说起:

  1.创建一个NSString类型的字符串有三种方法:

  

     //1.直接赋值
NSString *s1 = @"age is 26";
//2.使用实例方法初始化
NSString *s2 = [[NSString alloc]initWithFormat:@"age is %d",];
//3.使用类方法
NSString * s6 = [NSString stringWithUTF8String:"QYMa"];
NSString *s7 = [NSString stringWithFormat:@"age is %d",];

  这里面需要注意的一点是,看下面的代码:

    //新版本的SDK已经不推荐使用此方法创建NSString,可以直接常量赋值
//Using 'stringWithString:'with a literal is redundant
NSString *s8 = [NSString stringWithString:@"QYMa"];

  2.字符串的转化

(1).将C语言中的字符串转化为OC字符串 :initWithUTF8String:

 //c字符串转OC字符串
const char *s = "QYMa";
NSString *s3 = [[NSString alloc]initWithUTF8String:s];

(2). 将OC字符串转化为C字符串:UTF8String

     //OC字符串转c字符串
const char *cs = [s3 UTF8String];

(3).将字符串转化为的int  double float. intValue,doubleValue,floatValue,intergerValue

     NSString *s1 = @"";
int i = [s1 intValue];//转化int类型
double d = [s1 doubleValue];//转化为double类型
float f = [s1 floatValue];//转化为float类型
NSLog(@"\ni = %d, d = %f,f = %f",i,d,f );
    - (NSInteger)integerValue

运行结果:

i = 123, d = 123.000000,f = 123.000000

(4).求字符串的长度 :length

 NSUInteger len = [s1 length];

(5).根据下标获取获取字符串中的某个字符 :characterAtIndex:

 char st =   [s1 characterAtIndex:];

(6).比较两个字符串是否相等,相等返回YES(1),不相等返回NO(0)   (BOOL   YES(1)  NO(0)) :isEqualToString:

 BOOL b = [s1 isEqualToString:s4];

(7).比较两个字符串的大小,str1大于 返回1  相等返回0   小于返回-1:compare:

 NSString *s1 = @"";
NSString *s5 = @"hahah";
int c1 = [s1 compare:s5];

(8).比较两个字符串不区分大小写:相等为0 ,小于-1   大于为1 :caseInsensitiveCompare:

     NSString *str1 = @"haha";
NSString *str2 = @"HaHA";
int equal = [str1 caseInsensitiveCompare:str2];

(9).将字符串中的所有小写字符转换成大写 不改变原来的字符串,相当于将转化后为一个新的字符串。:uppercaseString

     NSString *str1 = @"haha";
NSString *str3 = [str1 uppercaseString];
NSLog(@"%@",str3);

(10).将字符串中的所有大写字符转换成小写 不改变原来的字符串:lowercaseString

     NSString *str4 = [str3 lowercaseString];
NSLog(@"%@",str4);

(11).将字符串中出现的第一个字母转换成大写,其余字母小写.:capitalizedString

  NSString *str5 = [str1 capitalizedString];
NSLog(@"%@",str5);

(12).查找字串 在字符串中的位置,找不到返回NSNotFound(-1) 找到返回location和length: rangOfString:

     NSString *str1 = @"my name is QYMa";
NSRange range = [str1 rangeOfString:@"QYMa"];
NSLog(@"%@",NSStringFromRange(range));//

    {11, 4}

(13).字符串抽取 从下标0开始到某个下标 (包前不包后):substringToIndex:

 NSString *str3 = [str1 substringToIndex:];

(14).字符串截取从 从某个下标开始抽取到字符串结束 :substringFromIndex:

 NSString *str2 = [str1 substringFromIndex:];

(15).在range指定范围内抽取字串:substringWithRange:

 NSString *str1 = @"my name is QYMa";
NSString *str4 = [str1 substringWithRange:NSMakeRange(, )];

(16).判断字符串是否以指定字符串开头:hasPrefix:

     BOOL b = [str1 hasPrefix:@"my"];

(17).判断字符串是否以指定的字符串结尾:hasSuffix:

 BOOL b1 = [str1 hasSuffix:@"Ma"];

(18).将指定文件的内容读取到字符串里面:initWithContentOfFile: encoding : error:

     NSString *s44 = [[NSString alloc]initWithContentsOfFile:@"/Users/mqy/Desktop/zhongyao.txt" encoding:NSUTF8StringEncoding error:nil];

  stringWithContentsOfFile

 

(19).将制定URL中的内容读取到字符串中:initWithContentOfURL: encoding: error:

     NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/mqy/Desktop/zhongyao.txt"];
NSString * s5 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

  stringWithContentsOfURL

 

(20).字符串的末尾追加新的字符,原来的字符串不变,会有一个新的字符串。:stringByAppendingString:

 NSString *str5 = [str1 stringByAppendingString: @"^^"];

  my name is QYMa^^

(21).在指定的范围追加字符串,形成一个新的字符串。:stringByReplaceingCharactersInRange:  withString:

     NSString * str33 = @"my  is QYMa";

     NSRange range1 = {,};

     // location代表的时从哪个索引开始插入,length 代表的意思可以覆盖几个字符

     NSString * str43 = [str33 stringByReplacingCharactersInRange:range1 withString:@"name"];

     NSLog(@"str4 %@",str43);//

     my name is QYMa

(22).使用新的字符,替换原有的字符。stringByReplacingOccurrencesOfString: withString:

     NSString * str55 = @"my name Is QYMa";

     NSString * str6 = [str55 stringByReplacingOccurrencesOfString:@"I" withString:@"i"];

     NSLog(@"str6 %@",str6);

    str6 my name is QYMa

(23).删除某个特定字符。stringByReplacingOccurrencesOfString: withString:

    NSString * str7 = @"my---name--is";

    NSString * str8 = [str7 stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"%@",str8);

    mynameis

(24).将字符串 写入到文件

      NSString
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error
  //扩展路径
NSString *Path = @"~/NSData.txt";
NSString *absolutePath = [Path stringByExpandingTildeInPath];
NSLog(@"absolutePath:%@",absolutePath);
NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]); //文件扩展名
NSString *Path = @"~/NSData.txt";
NSLog(@"Extension:%@",[Path pathExtension]);

(25.)字符串检索 

 

     NSString
//如果找到就返回范围,否则NSRange的location项被设置为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);
}

(26).将字符串通过特定字符分割。 将字符串切割成数组:componentsSeparatedByString:

     NSString * str = @"test,test1,test2,test3";
NSArray *array = [str componentsSeparatedByString:@","];
NSLog(@"array[2] = %@",array[]);

(27).多重分割符:有2个或两个以上分隔符.componentsSeparatedByCharactersInSet

     NSString *str = @"A~B^C";

     NSArray *arr = [str componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"~^"]];

(28).将数组中的字符串拼接成一个路径.pathWithComponents:

     NSMutableArray *muArray = [NSMutableArray array];
[muArray addObject:@"Users"];
[muArray addObject:@"mqy"];
[muArray addObject:@"DeskTop"];
NSString *path = [NSString pathWithComponents:muArray];
NSLog(@"%@",path);

    Users/mqy/DeskTop

(29)将路径分割成数组 pathComponents

     //将路径分割成数组
NSArray *array = [path pathComponents];
NSLog(@"%@",array);

(30).判断是否为绝对路径 isAbsolutePath(依据前面有没有/)

     NSString *str1 = @"/Users/mqy/Desktop";
//判断是否为绝对路径
NSLog(@"%i",[str1 isAbsolutePath]);

NSStringEncoding 中常用的字符编码:

NSASCIIStringEncoding 
     NSUTF8StringEncoding 
     NSUnicodeStringEncoding

说实话,NSString的方法真心好多啊!(°_°)。

接下来说一下,NSMutableString

NSMutableString 类继承NSString类,那么NSString 提供的方法在NSMutableString中都可以使用,NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符串 删除字符串 指定位置插入字符串,用它来操作字符串更加灵活。

下面就说一下:

(1).将不可变的字符串转换为可变的字符串

 NSMutableString *s1 = [NSMutableString stringWithFormat:@"my name is QYMa"];
NSMutableString * str = [[NSMutableString alloc]initWithString:@"hello"];

(2).在指定下标(不要越界)位置插入NSString类型字符串。insertString: atIndex:

 [s1 insertString:@" ?" atIndex:];
  my name is  ?QYMa

(3).在末尾追加单个字符串。appendString:                 appendFormat:

   //使用拼接方法 拼接单个
[s1 appendString:@" girl"];
    //拼接多个
[s1 appendFormat:@"my age is %d",];

(4).删除指定子字符串。deleteCharactersInRange: rangeOfString:

     //获取girl所在的位置,并删除
[s1 deleteCharactersInRange:[s1 rangeOfString :@"girl"]];
NSLog(@"S1 = %@",s1);

(5).从指定下标删除length个字符. deleteCharactersInRange:

 [str deleteCharactersInRange:NSMakeRange(, )];

(6).将指定下标位置的length个字符替换为指定的字符串.replaceCharactersInRange:  withString:

[str replaceCharactersInRange:NSMakeRange(, ) withString:@"ios"];

(7).修改字符串亦称对该可变字符串赋值。

 [str setString:@"QYMa"];

目前就先整理到这了,这个可真是不少啊!好啦!活动活动筋骨,出去呼吸一下新鲜空气,走啦!

14.Object-C--浅谈Foundation框架字符串NSString 与NSMutableString的更多相关文章

  1. 15.Object-C--浅谈Foundation框架OC数组NSArray与NSMutableArray

    昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.O ...

  2. 13.Object-C--浅谈Foundation框架常用的结构体

    ------- android培训.iOS培训.期待与您交流! ---------- 昨天学习了Foundation框架中常用的结构体,下面我简单的总结一下,如果错误麻烦请留言指正,谢谢! Found ...

  3. OC中Foundation框架之NSString、NSMutableString

    创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...

  4. 手撸ORM浅谈ORM框架之基础篇

    好奇害死猫 一直觉得ORM框架好用.功能强大集众多优点于一身,当然ORM并非完美无缺,任何事物优缺点并存!我曾一度认为以为使用了ORM框架根本不需要关注Sql语句如何执行的,更不用关心优化的问题!!! ...

  5. 手撸ORM浅谈ORM框架之Add篇

    快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...

  6. 手撸ORM浅谈ORM框架之Update篇

    快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...

  7. 手撸ORM浅谈ORM框架之Delete篇

    快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...

  8. 手撸ORM浅谈ORM框架之Query篇

    快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...

  9. Foundation框架—字符串

    Foundation框架—字符串 一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:O ...

随机推荐

  1. 解决Ubuntu下内存不足---作为Slave的虚拟机

    1)在虚拟机上安装了Ubuntu桌面版作为DataNode,由于物理机内存的限制只是分了1G的内存给虚拟机,使用bin/start-all.sh启动了hadoop之后,Slave的资源使用情况如下图所 ...

  2. Python中的两种列表

    python中有两种类型的列表:其中一种是用[]创建的列表,这种列表具有伸缩性,可以动态改变,而另外一种列表是用()创建,成为元组,元组一旦创建,在任何状况下都不能再改变,是一种常量列表. movie ...

  3. Shell 备忘录

    此文收集工作中用到的Shell备忘,随用随机: 1.比较 -eq       等于,如:if [ "$a" -eq "$b" ] -ne       不等于,如 ...

  4. iOS数组和字符串的转化

    NSMutableArray *components = [messageStr componentsSeparatedByString:@"*"] ; 反过来为 NSStrig ...

  5. [转载] ACE 组播校验和出错问题解决

    源地址:http://yuanmuqiuyu2000.blog.sohu.com/140904942.html 使用ACE框架写了个组播简单的测试工具,但是测试过程中,总是发现udp校验和出错的信息. ...

  6. C#反射Assembly 详细说明

    1.对C#反射机制的理解2.概念理解后,必须找到方法去完成,给出管理的主要语法3.最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等 ...

  7. Android 图片异步加载的体会,SoftReference已经不再适用

      在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>>  这样软引用的 ...

  8. sip比较好的博客

    http://blog.sina.com.cn/s/articlelist_1796220243_1_1.html

  9. iOS开发多线程--(NSOperation/Queue)

    iOS实现多线程的方式有三种,分别是NSThread.NSOperation.GCD. 关于GCD,请阅读GCD深入浅出学习 简介 NSOperation封装了需要执行的操作和执行操作所需的数据,提供 ...

  10. Ajax实例-购物车

    一.概述 1.当添加或删除商品时,购物车会立即更新数据 2.思路: (1)建立商品类Item.java,存有商品属性name,prince,code(商品编码)等 (2)建立商品目录类Catalog. ...