NSString 和 NSMutableString

来源:互联网 发布:java cs开发 编辑:程序博客网 时间:2024/05/22 07:05

1.需要理解的知识

1.1不可变字符串NSString

1.1.1 OC字符串和C字符串的不同

1,OC中的字符串为对象,C语言中的字符串为字符指针

2,OC中的字符串中NSString ,C语言中的字符串中Char *

3, OC中的字符串为对象类型,可以调用相关方法

C语言的字符串不是对象,所以操作比较麻烦


1.1.2 OC字符串的创建

方法1

//创建字符串对象@"abc"

       NSString *str = @"abc";

        //打印字符串对象用%@,%i %d  %f %lf均属于格式输出占位符号

        //%@ 代表对象类型,

        //Student *stu = [[Student alloc] init];

        //NSLog(@"%@",stu);

       NSLog(@"%@",str);

方法2

1.1.3 OC字符串的常见操作

1.1.3.1.获取字符串长度

1.1.3.2.获取字符

1.1.3.3.判断字符串相等

1.1.3.4.字符串比较

1.1.3.5.字符串查找

1.1.3.6.判断前后缀

1.1.3.7.数字串转化

1.1.3.8.大小写转换

1.1.3.9.字符串提取

1.2可变字符串NSMutableString

1.2.1什么是可变字符串

可变字符串对象的内容可以改变

1.2.2NSMutableString NSString 的关系

NSMutableString(子类)继承于NSString(父类),NSString类的所有方法NSMutableString都可以使用


//创建可变字符串对象

        NSMutableString *str = [[NSMutableStringalloc] init];

        //获得可变字符串的长度

       NSUInteger i = [str length];

        //将字符串改为大写

       NSString *uperString = [str uppercaseString];

        //在主字符串中查找子字符串,如果有,返回子字符串下标和子字符串在主字符串占用的长度

        //如果没有子字符串,rangelocation = NSNotFound,range.length = 0;

       NSRange range = [str rangeOfString:@"ab"];

        

1.2.3可变字符串常见操作

1.2.3.1增加字符串

1.2.3.2删除字符串

1.2.3.3修改字符串


2.需要记住的知识

2.1 NSString

2.1.1方法

2.1.1.1常用创建方法

//实例化方法创建字符串

- (instancetype)initWithString:(NSString *)aString

   NSString *str = @"abc";

        //参数是NSString *类型,

        //以一个字符串对象创建另外一个新字符串对象

        //两个字符串的内容是相同的

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

        //只创建一个空间,地址相同

          NSLog(@"%@",str2);

        

- (instancetype)initWithFormat:(NSString *)format, …;(记住)

//Format: 格式

        //initWithFormat:用自定义格式初始化字符串对象,有点类似于C语言中的,printf“”),SCANF("")那种格式控制模式

        NSString *str = [[NSStringalloc] initWithFormat:@"%i,%@,%f",5,@"abc",6.6];

        NSString *str2 = [[NSStringalloc] initWithFormat:@"%i and %@ and %f",5,@"abc",6.9];

       NSLog(@"%@",str);

        NSLog(@"%@",str2);

- (instancetype)initWithUTF8String:(const char *)bytes;

//参数为const char*类型

        //可以理解为,将C语言中的字符串转换成OC中的对象。

        NSString *str1 = [[NSStringalloc] initWithUTF8String:"abcd"];

       NSLog(@"%@",str1);

    

//类方法创建字符串

+ (instancetype)stringWithString:(NSString *)aString

NSString *str2 =@"abcd";

       NSLog(@"%p",str2);

        //根据一个字符串创建另个一新的字符串,但是没有分配新的空间

        NSString *str = [NSStringstringWithString:str2];

       NSLog(@"%@",str);

          NSLog(@"%p",str);

        

+  (instancetype)stringWithFormat:(NSString *)format,, …

  //stringWithFormat:@"字符串的格式",格式对应的值。

        //和实例方法initWithFormat作用一样

        NSString *str = [NSStringstringWithFormat:@"%d%@%f",5,@"abcdef",5.6];

       NSLog(@"%@",str);

        

+ (instancetype)stringWithUTF8String:(const char *)bytes

//通过类方法stringWithUTF8String:创建一个字符串对象

        //与之对应的实例方法为:initWithUTF8String:

        //二者作用是一样的。

        NSString *str = [NSStringstringWithUTF8String:"abc"];

       NSLog(@"%@",str);


2.1.1.2求字符串长度

- (NSUInteger)length;

NSString *str= @"abcd";

       //无符号长整型

       NSUInteger i= [strlength];

        //%luNSUInteger 的格式占位

       NSLog(@"%lu",i);


2.1.1.3通过索引获取相应的字符

- (unichar)characterAtIndex:(NSUInteger)index;

NSString *str = @"abcd";

        //characterAtIndex:对应下标下的字符

        //unichar :typedef unsigned short unichar;

       unichar c =  [strcharacterAtIndex:1];

        //unichar对应的格式占位符是%c

       NSLog(@"%c",c);

2.1.1.4字符串比较

//判断两个字符串是否相等 

- (BOOL)isEqualToString:(NSString *)aString

 NSString *str1 =@"abc";

       NSString *str2 =@"abcb";

         //Xcode编译器在编译的时候,发现两个字符串的内容是一样的,那么就把两个对象合并成同一个对象存在同一个地址空间,

      //目的是节省内存

       NSLog(@"%p%p%@%@",str1,str2,str1,str2);

        //c语言中的布尔类型为ture  false

        //ocYES  NO

       BOOL b = [str1isEqualToString:str2];

        //isEqualToString翻译:判断两个字符串是否相同

       if (b) {

           NSLog(@"yes");

      }

       else

       {

           NSLog(@"no");

      }


//比较两个字符串大小

- (NSComparisonResult)compare:(NSString *)aString

NSString *str1 =@"abcd";

       NSString *str2 =@"abbd";

        //compare比较两个字符串的大小,比较的时ASCII码的值,和C语言中的strcmp是一样的机制

        //两个字符串的字符逐一比较,一旦遇到升序或者降序(连个字符不同,前边大为降序,后边大为升序)将停止比较。

           //NSComparisonResult是一个枚举:里边有

        //NSOrderedAscending = -1

        //NSOrderedDescending = 1

        //NSOrderedSame = 0

       NSComparisonResult i = [str1compare:str2];

       NSLog(@"%ld",i);

       if (NSOrderedAscending == [str1compare:str2]) {

            NSLog(@"NSOrderedAscending");

          }

       else if (NSOrderedDescending == [str1 compare:str2])

       {

            NSLog(@"NSOrderedDescending");

       }

       else if (NSOrderedSame == [str1 compare:str2])

       {

             NSLog(@"NSOrderedSame");

       }

//不区分大小写比较大小

- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString;

NSString *str1 =@"C";

       NSString *str2 =@"b";

        //忽略大小写进行比较字符串

        //比较的时候可以都按大写比较,或者都按小写比较。

        if (NSOrderedSame == [str1caseInsensitiveCompare:str2]) {

           NSLog(@"NSOrderedSame");

       }

        elseif(NSOrderedDescending == [str1caseInsensitiveCompare:str2])

       {

            NSLog(@"NSOrderedDescending");

       }

        elseif(NSOrderedAscending == [str1caseInsensitiveCompare:str2])

       {

            NSLog(@"NSOrderedAscending");

          }

2.1.1.5字符串查找

- (NSRange)rangeOfString:(NSString *)aString;(记住)

NSString *str =@"abcd";

            //rangeOfString 查找字符串中是否存有子字符串

        //一般用到项目中电话本里边

       NSRange range = [strrangeOfString:@"bd"];

//        typedef struct _NSRange {

//                NSUInteger location;

//                NSUInteger length;

//            } NSRange;

        //如果主字符串具有字符串,那么就返回子字符串在主字符串中的下标,如果没有就返回NSNotFound

        //NSNotFound意思是没有找到

       if (range.location ==NSNotFound)

       {

           NSLog(@"没有子字符串");

       }

          else

       {

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

          }

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

        //打印子字符串在主字符串中的下标位置

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

        //打印子字符串的长度

        

2.1.1.6判断前后缀

- (BOOL)hasPrefix:(NSString *)aString;

- (BOOL)hasSuffix:(NSString *)aString;

 NSString *str = @"abcdefg";

        //hasPrefix:判断是否具有前缀(只要在前边的都是前缀)

       BOOL b1 = [strhasPrefix:@"ab"];

        //hasSuffix:判断是否具有后缀(只要在后边都是后缀)

        //其实两个函数就是一个从后边查,一个从前边查。

       BOOL b2 = [strhasSuffix:@"fg"];

       if (b1) {

           NSLog(@"YES");

       }

       else

       {

           NSLog(@"NO");

       }

        

       if (b2) {

           NSLog(@"YES");

       }

       else

       {

           NSLog(@"No");

       }


2.1.1.7数字串转化为数字

- (double)doubleValue;

- (float)floatValue;

- (int)intValue;

 NSString *str = @"66";

        //把数字字符串对象转成整型

       int i = [strintValue];

       NSLog(@"%i",i);

- (NSInteger)integerValue ;

- (longlong)longLongValue ;

- (BOOL)boolValue ; 

NSString *str = @"YES";

       if ([str boolValue]) {

           NSLog(@"YES");

       }


2.1.1.8大小写转换

      - (NSString *)uppercaseString;

- (NSString *)lowercaseString;

- (NSString *)capitalizedString;

   NSString *str = @"abcD";

      // uppercaseString 把字符串的所有字符转换成大写

       NSString *str2 = [struppercaseString];

        //lowercaseString 把字符串的所有字符转换成小写

           NSString *str3 = [str lowercaseString];

        //capitalizedString 把字符串中所有单词的首字母转换成大写,其他的都转换成小写

       NSString *str4 = [strcapitalizedString];

        

       NSLog(@"%@",str2);

       NSLog(@"%@",str3);

       NSLog(@"%@",str4);

2.1.1.9字符串提取(记住)

- (NSString *)substringFromIndex:(NSUInteger)from;

  NSString *str =@"abcdefg";

        //substringFromIndex:提取从指定下标到结尾的子字符串

       NSString *str2 = [strsubstringFromIndex:2];

       NSLog(@"%@",str2);

- (NSString *)substringToIndex:(NSUInteger)to;

NSString *str = @"abcdefg";

        //substringToIndex:从头打印指定个数的字符,或者理解成从开头到指定下标前的字符

       NSString *str2 = [strsubstringToIndex:3];

       NSLog(@"%@",str2);

- (NSString *)substringWithRange:(NSRange)range;

 NSString *str = @"abcdefghi";

        //NSMakeRange指定的坐标开始打印指定个数的字符,NSMakeRange参数1为指定下标,参数2为指定个数

        NSString *str2 = [strsubstringWithRange:NSMakeRange(0,3)];

       NSLog(@"%@",str2);

2.1.1.10从本地读取文件内容

- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;(实例方法)

 //从文件中读取文件的内容,返回一个NSString *的地址

        //参数1:以NSString类型传入一个文件路径

        //参数2:文件的编码格式

        //参数3:一般为nil

       NSString *str = [[NSStringalloc] initWithContentsOfFile:@"/Users/student/Desktop/hello.txt"encoding:NSUTF8StringEncodingerror:nil];

      NSLog(@"%@",str);

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;(类方法)

 //从文件中读取文件的内容,返回一个NSString *的地址

        //参数1:以NSString类型传入一个文件路径

        //参数2:文件的编码格式

        //参数3:一般为nil

        NSString *str1 = [NSStringstringWithContentsOfFile:@"/Users/student/Desktop/hello.txt"encoding:NSUTF8StringEncodingerror:nil];

       NSLog(@"%@",str1);



0 0
原创粉丝点击