OC_字符串的各种方法与类别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC_字符串的各种方法与类别相关的知识,希望对你有一定的参考价值。

                                                                                                                                                                                                                                                                                                                                                              【字符串】

 

【注】OC的程序,依托于基础类库Foundation.Foundation框架提供了很多官方类,其中有三个基础的数据结构。

【字符串】【数组】【字典】

 

 

 

 

 

知识点

1.NSString 

2.NSMutableString 

*****************************************************************************

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

 

   1.为什么需要NSString对象

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

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

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

 

 

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

OC:  NSString *str = @“aaa”;

           C:   char *c = “aaa”;

  char c[20] = “hello”;

 

 

   3.NSLog如何格式化NSString对象

       OC语言:%@

C语言:%s

    

 

 

   4.字符串创建

      (1)定义字符串常量:

      NSString *str = @"My name is xiaoming.";

  //@“XXX”表示告诉编译器,创建一个字符串对象,返回值是对象的地址。

  //只有官方类有这样的特权。

 

 

   (2)通过一个字符串创建另一个字符串

       NSString * str2 = [[NSString alloc] initWithString:str];

       //NSString * str3 = [[NSString alloc] initWithString:@"我是一个字符串咿呀咿呀呦!"];

       

  (3)将C字符串转换为OC字符串

      NSString * str3 = [[NSString alloc] initWithUTF8String:"我是C字符串"];

 

     (4)使用格式符创建字符串(拼接字符串)

      NSString * str4 = [[NSString alloc] initWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, ‘T‘, 3.14];

     

  [注]每一个init方法,对应一个stringwith的类方法

      (5)

       NSString *str5 = [NSString stringWithString:str];

   (6)

   NSString *str6 = [NSString stringWithUTF8String:"qianfeng"];

   (7)

   NSString *str7 = [NSString stringWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, ‘T‘, 3.14];

 

 

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

  //1.把C字符串转化为OC字符串

      str = [NSString stringWithUTF8String:cString];

//2.把OC字符串转化为C字符串

       const char *c = [ocString UTF8String];

 

    6.求字符串长度(字符个数)

     //汉字的长度也为1

     NSUInteger ret = [str length];

 

 

 

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

      unichar c = [str characterAtIndex:i];

   NSLog(@"%C", c);        

  //unicode 万国码,用更大的存储空间存储各国字符。

  //mac下默认的编码格式称为UTF-8编码格式,是万国码的一个分支,理念是不同的字符,用不同的字节来存储。比如一个汉字占3字节,一个英语字符1字节,但都是一个字符。

 

  

    8.字符串判断

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

                 //比较两个字符串内容是否相同(区分大小写)

        BOOL isEq = [str2 isEqualToString:str3];

        

        BOOL类型:YES是真(1),NO是假(0)

        if (isEq == YES)

        {

            NSLog(@"内容相同");

        }

        else

        {

            NSLog(@"内容不相同");

        }

 

 

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

       if (str2 == str3)

        {

            NSLog(@"同一个对象");

        }

        else

        {

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

        }

   

 

     9.字符串比较

         NSComparisonResult result = [str1 compare:str2];

        switch (result)

        {

            case NSOrderedAscending:

                

                

                NSLog(@"升序");

                

                break;

            case NSOrderedSame:

                

                NSLog(@"相同");

                

                break;

            case NSOrderedDescending:

                

                NSLog(@"降序");

                

                break;

                

            default:

                break;

        }

     

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

       (1)int                       [str1 intValue]

    (2)NSInteger     [str1 integerValue] 

    (3)float         [str1 floatValue]

    (4)bool          [str1 boolValue];

    (5)double        [str1 doubleValue]

       (6)long long      [str1 longLongValue]

 

 

     

    11. 替换字符串

      //B字符串替换A字符串(A被B替换)

      [str1 stringByReplacingOccurrencesOfString:@“A” withString:@“B”];

 

   12.查找子串的位置和范围

NSRange range = [str rangeOfString:@"粉刷"];

    if (range.location == NSNotFound)

    {

            NSLog(@"没找到!");

    }

    else

    {

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

    }

 

 

    13.子串的提取

         (1)从0开始到指定位置 之前

NSString * subStr1 = [str substringToIndex:5];

 

             (2)从指定下标开始截取到最后   

NSString * subStr2 = [str substringFromIndex:5];

 

   (3)截取任何一部分 

     NSRange range = {1,5};

NSString * subStr3 = [str substringWithRange:range];

 

 

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

NSMutableString 继承自 NSString

1.凡是NSString的方法,NSMutableString都能用

2.凡是传参需要传入NSString * 传入NSMutableString *也行

 

 

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

     (1) NSMutableString *string = [[NSMutableString alloc] init];

   (2)  string = [NSMutableString string];

 

 

 

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

      string = [NSMutableString stringWithFormat:];

       [NSMutableString stringWithString:];

 

 

   3.重置字符串内容

     [string setString:@"abbbb"];

 

 

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

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

 

 

 

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

    (1)[string appendString:@“要追加的字符串”];

    (2)[string appendFormat:@"name=%@",@"xiaoming"];

 

 

 

   6.删除字符串一部分

     //找要删除的范围

    NSRange range = [string rangeOfString:@"22222"];

   //删除

   [string deleteCharactersInRange:range];

 

  7.修改字符串

     [str replaceCharactersInRange:range withString:@"XXXXXXXXXXXXXXX"];

 

 

 

 

******************************************************************************

 

 

 

【类别/category】

———————————————————————————————————————

 <1>.类别的写法:

 

                @interface 类名 (类别名)

 

          定义方法

 

  @end

 

 

  【注】一旦使用类别给已有的类增补方法,那么这个类的对象就可以使用这个方法

 

 

 

<2>.类别功能:

 

  1. 可以给已有/ 系统原生的类增加方法

  2.可以对类的方法进行分类管理,可以将类的实现分散到多个不同文件或多个不同框架中。

 

 

 

 

<3>使用类别需要注意的问题

 

1.类别中不能添加成员变量

2.使用类别增加的方法须导入类别头文件

3.父类类别中的方法,子类也可以用

 

 

 

<4>类扩展/匿名类别

当不想对外公开一些类的方法时,我们可以使用类扩展

 

1.类扩展的基本语法(写在在.m文件中)

@interface Person()//没有名字

  - (void)song;

@end

 

@implementation Person

- (void)song{

 

}

@end

 

  【注】类扩展中的声明和实现都放在.m文件中

 

 

 

    2.类扩展的功能

  1.可以实现私有方法

  2.方便程序员调用不公开的方法

  3.可以声明成员变量

 

以上是关于OC_字符串的各种方法与类别的主要内容,如果未能解决你的问题,请参考以下文章

OC类别与扩展

OC中类别(Category)的属性

2-1 OC 类别(分类)

Swift3.0-字符串和字符

无法访问 Swift 子类中的 oc 类别方法

如何在OC中使用Swift如何在Swift中使用OC