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. javascript中的JSON序列化与反序列化

    简单粗暴上代码: function create() { this.name = "jack"; this.sex = "man"; } create.prot ...

  2. php curl 分离header和body信息

    php中可以通过curl来模拟http请求,同时可以获取http response header和body,当然也设置参数可以只获取其中的某一个.当设置同时获取response header和body ...

  3. ExtJs之进度条实现

    慢慢按书上的作. <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta h ...

  4. hdu 3590 PP and QQ

    知识储备: Anti-SG 游戏和 SJ 定理  [定义](anti-nim 游戏)  桌子上有 N 堆石子,游戏者轮流取石子.  每次只能从一堆中取出任意数目的石子,但不能不取.  取走最后一 ...

  5. JavaWeb项目开发案例精粹-第6章报价管理系统-05Action层

    0. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo ...

  6. [iOS]利用系统NSRegularExpression使用正则表达式

    // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights reserved. // #import <UIKit/UI ...

  7. 解密ThreadLocal

    原文:http://qifuguang.me/2015/09/02/%5BJava%E5%B9%B6%E5%8F%91%E5%8C%85%E5%AD%A6%E4%B9%A0%E4%B8%83%5D%E ...

  8. Largest Rectangle in Histogram-最大长方形

    题目描述: 给定n个非负整数height[n],分别代表直方图条的高,每个条的宽设为1,求直方图中面积最大的矩形的面积 题目来源: http://oj.leetcode.com/problems/la ...

  9. Control character in cookie value, consider BASE64 encoding your value

    这是因为你给Cookie设置了中文的value,比如Cookie c = new Cookie("user", "张三");

  10. C中调用LUA回调(LUA注册表)

    实现原理: 通过将LUA中得回调函数存入LUA注册表中来保存LUA函数,然后在需要回调时从LUA注册表中取出LUA函数进行调用 下面是一些预备知识:(学习两个重要的函数) 原汁原味的英文解释的最透彻, ...