iOS开发-OC语言 (三)字符串

字符串

 

知识点

1.NSString 

2.NSMutableString 

3.了解NSMutableStringNSString的继承关系

了解:

  1.什么是字符编码

是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉      冲)进行配对。即在符号集合与数字系统之间建立对应关系。

字符编码百科:http://baike.baidu.com/link?url=bFKEidJQmo3JEljFQRbtkEyToRe1_SrqbCgNsv4jKcYGFyTBixJjhTVYegSiozPVpvrR99cQhUoQq_01BnF1L_

  

  2.UTF8编码:UTF-88-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson1992年创建。现在已经标准化为RFC 3629UTF-816字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

 

 

 

 

 

 

========= 不可变字符串(NSString) =========

 

   1.为什么需要NSString对象

答:在OC中创建字符串时,一般不使用C的方法,

因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,

Cocoa中NSString集成的一些方法,可以很方便的操作字符串。

 

 

  2.OC中定义字符串和C语言定义字符串

    //C字符串常量

        char *cString = "c字符串";

        printf("c string is %s\n",cString);

        //OC字符串常量

 

        NSString *ocString = @"oc字符串";

 

        NSLog(@"oc string is %@",ocString);

 

 

  3.NSLog如何格式化NSString对象

      %@

    

 

 

    4.字符串创建

      (1)定义一个空的不可变字符串(一般用不到):

        NSString *string = [[NSString alloc] init];

      (2)定义一个有值的字符串(一般用不到)

        [NSString stringWithString:@"test"];

        [[NSString alloc] initWithString:<#(NSString *)#>];

 

  

    5.如何格式化一个字符串

     [NSString stringWithFormat:<#(NSString *), ...#>];

 

 

  6.C语言字符串和NSString的转换

 

  <1>c字符串转化为NSString

      [NSString stringWithUTF8String:c];

     <2>NSString转化为C

      [string UTF8String];

 

 

    7.如何从文本文件中读取字符串

  //第1种:

     /*

         stringWithContentsOfFile:要读取文件路径

         encoding:编码方式

         error:错误信息,可以传nil

         */

//类方法

        s = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

//对象方法

        [[NSString alloc] initWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];

 

2种:

//把路径的字符串转化为NSURL对象

      NSURL *filePath = [NSURL fileURLWithPath:path];

        

        string = [NSString stringWithContentsOfURL:filePath encoding:NSUTF8StringEncoding error:nil];

 

 

 

    8.如何把一个字符串写入到文件中

       /*

         writeToFile:要写入的文件路径(file path

         atomically:YES表示原子性,NO表示非原子性。一般是YES(比较安全),当为YES,系统在写入的过程中会创建一个临时文件,系统先把数据写入到临时文件里面,如果写入成功,最后赋值到目标文件里面。

         encoding:编码,一般是UTF8(NSUTF8StringEncoding)

         */

    

        NSError *error;

        //文件不存在会自动创建

        [string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

 

 

    9.如何从网络上读取字符串

    NSURL *url = [NSURL URLWithString:远程地址];

        

        string = [NSString stringWithContentsOfURL: url encoding:NSUTF8StringEncoding error:nil];

   

 

 

    10.求字符串长度(一个中文长度为1)

     [string length]

 

 

 

 

 

    11.通过索引获取相应的字符

     [string characterAtIndex:0]

 

 

  

    12.字符串判断

      1)判断两个字符串内容是否相同

        [s1 isEqualToString:s2]

 

      2)判断两个字符串是否是同一个对象

 

        if (s1 == s2)

        {

            NSLog(@"s1和s2是同一个对象");

        }

        else

        {

            NSLog(@"s1和s2不是同一个对象");

        }

   

 

     13.字符串比较

        1)两个字符串比较(区分大小写)

        NSComparisonResult result = [s1 compare:s2];

        

        if (result == NSOrderedAscending)

        {

            NSLog(@"s2 > s1");

        }

        else if (result == NSOrderedSame)

        {

            NSLog(@"s1 = s2");

        }

        else

        {

            NSLog(@"s2 < s1");

        }

         

        2)比较两个字符串(忽略大小写)

          //忽略大小写

        result = [s1 caseInsensitiveCompare:s2];

 

 

    14.转化为基本类型(int,float,bool,double,integer

       //转化为int

        [num2 intValue];

        //转化为NSInteger

        [num2 integerValue];

        //转化为Double

        [num2 doubleValue];

        //float

        [num2 floatValue];

        //long long

        [num2 longLongValue];

        //bool

        [num2 boolValue];

 

    15.把一个字符串转化为大写,小写,各个单词的首字母大写

       //转化为大写

        NSString *upperString = [s1 uppercaseString];

        NSLog(@"大写:%@",upperString);

        //转化为小写

        NSString *lowString = [s1  lowercaseString];

        NSLog(@"小写:%@",lowString);

        

        //各个单词的首字母大写

        NSString *ss = [s1 capitalizedString];

        NSLog(@"各个单词的首字母大写:%@",ss);

     

    16. 替换字符串

        [S stringByReplacingOccurrencesOfString:A  withString:B];//S中所有的A换为B

       [string stringByReplacingOccurrencesOfString:@"l3l" withString:@"s"];

    

 

    17.分割一个字符串,转化为数组

[string componentsSeparatedByString:@“分隔符];

 

    18.字符串截取

    //从指定索引截取到最后

        NSString *subString = [string substringFromIndex:起始索引];

//从开始截取到指定的索引之前

        subString = [string substringToIndex:终止索引(不包括当前索引)]’

//截取字符串的一部分

                //范围

        NSRange range = NSMakeRange(2, 3);

       [string substringWithRange:range];

 

 

       

 

    19.字符串拼接

      (1)拼接一个字符串

        [str1 stringByAppendingString:str2]

      (2)拼接一个格式化字符串

       [str1 stringByAppendingFormat:@" %@",str2]

       

 

    20.查找字符串

        //[string rangeOfString:要查找的字符串]

        //只会查找第一次出现的字符串,从前向后查找

        range = [string rangeOfString:@"test"];

        NSLog(@"%ld - %ld",range.location,range.length);

        

        /*

         NSCaseInsensitiveSearch 不区分大小写

         NSLiteralSearch 区分大小写

         NSBackwardsSearch 从后向前查找

         */

        range = [string rangeOfString:@"test" options:NSBackwardsSearch];

        NSLog(@"%ld - %ld",range.location,range.length);

 

 

    21.判断一个字符串是否以某个前缀或者后缀

 //判断是否以某个字符串前缀开头

        [string hasPrefix:@"he22"]

//判断是否以某个字符串前缀结尾

[string hasSuffix:@"ds"];

 

    22.路径

     1)路径后面追加一个文件名或者路径(网络会用到)

       [path stringByAppendingPathComponent:文件名或者文件夹名字];

 

 

     2)把指定的字符串数组拼接成路径

      NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Users",@"qianfeng",@"desktop",@"新建文件夹", nil];

        newPath = [NSString pathWithComponents:array];

 

     3)将路径分割成字符串数组

      NSArray *components = [path pathComponents];

       

 

 

     4)判断是否是绝对路径

        BOOL isAbsolutePath = [path isAbsolutePath];

        

  

 

     5)获取最后一个目录或者文件名

       //取路径的最后一部分

        NSString *s = [path lastPathComponent];

 

     6)删除路径最后一部分

[path stringByDeletingLastPathComponent];

 

     7)获取文件后缀

[path pathExtension]        

 

     8)删除后缀

[path stringByDeletingPathExtension];

       

 

     9)添加后缀

      [path stringByAppendingPathExtension:@"png"];

 

  

 

  .

 

 

 

 

========= 可变字符串(NSMutableString) =========

 

   1.初始化可变字符串(必须初始化)

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

    string = [NSMutableString string];

    

 

 

 

   2.初始化带有字符串的可变字符串

     [NSMutableString stringWithString:@"sss"];

 

 

   3.设置字符串 

     //设置字符串(会覆盖原来字符串内容)

      [string setString:@"测试"];

 

   4.在指定的位置插入字符串

[string insertString:@“要插入的字符串atIndex:插入字符串的下标];

 

 

   5.追加一个部分字符串(在最后追加)

    [string appendString:@"🐷"];

        //追加格式化字符串

    [string appendFormat:@"dog=%@ cat=%@",@"🐶",@"🐱"];

 

 

   6.删除字符串一部分

       //要删除的范围

        NSRange deleteRange = NSMakeRange(3, 2);

        //删除指定范围的字符

        [string deleteCharactersInRange:deleteRange];

     

 

 

 

 

 

 

 

 

 

 

posted @ 2017-01-11 20:32  CUG  阅读(1786)  评论(1编辑  收藏  举报