【iOS 基础】NSString 类

来源:互联网 发布:sql 试图的意义 编辑:程序博客网 时间:2024/05/27 16:41

在IOS的开发过程中,NSString绝对是一个经常使用的类, 最近一直在对字符串进行各种操作, 索性停下来总结一下这个基础类,各位看官请轻喷,有问题大家一起互动。


OBjective-C 中处理字符串的类有两个:NSString 和 NSMutableString。

NSString 为不可变字符串,内容和长度不能进行动态更改,NSMutableString 为可变字符串,创建之后可以动态的改变该字符串的内容和长度。


1,字符串的创建

      NSString *str =@"字面量创建字符串";

   NSString *str1 = [NSStringnew];

   NSString *str2 = [[NSStringalloc]initWithString:@"等同于1"];

   NSString *str3 = [NSStringstringWithFormat:@"%@",@"字符串"];


    

2,   字符串的追加

    在字符串的末尾追加:

          NSString *temp =@"临时字符串";

     NSString *str = [tempstringByAppendingString:temp];

  在指定的范围追加:

     NSString *str1 =@"奋斗中,奋斗中";

     NSRange rang = {4,0};   // 4代表从哪个索引开始插入, 0代表覆盖几个字符

     NSString *str2 = [str1stringByReplacingCharactersInRange:rangwithString:@"我在"];

  格式化字符串:

   int num =666;

    float height = 8.8;

    char* charstr = "rose";

    NSString *str3 = [NSStringstringWithFormat:@"他买了%d %s,每朵都有%.f厘米高",num,charstr,height];


    

3,  字符串的截取

   NSString *str =@"你是我的小呀小苹果";

    // 字符串长度

    NSUInteger length = [strlength];

    

   //根据索引获得单个字符

    unichar cstr = [strcharacterAtIndex:3];

    

   //从指定的索引位置开始截取字符串到末尾

    NSString *str1 = [strsubstringFromIndex:3];

    

   //从字符串首位开始截取到指定索引位置

    NSString *str2 = [strsubstringToIndex:4];

    

   //截取字符串从某个位置开始到某个位置结束

    NSRange rang = {2,3};

    NSString *str3 = [strsubstringWithRange:rang];

    

   //获得一个字符串在字符串中的索引位置,长度

    NSRange charrang = [strrangeOfString:str3];

   

4,   字符串的判断

   NSString *str =@"字符串比较";

   NSString *str1 =@"字符串";

   NSString *str2 =@"字符串";

    // 判断是否为空

   if (str ==nil || str1.length ==0)

    {

       NSLog(@"字符串为空");

    }

   else

    {

       NSLog(@"字符串不为空");

    }

    

   //判断是否相等比较

   //判断内存地址是否相同

   if (str1 == str2)

    {

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

    }

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

   if ([str1isEqualToString:str2])

    {

       NSLog(@"先判断字符串的地址是否相同,相同了,再判断字符串是否相同");

    }

    // ASICC 值比较

   NSComparisonResult result = [str1compare:str2];

   switch (result)

    {

        caseNSOrderedAscending:

           NSLog(@"str1小于 str2");

           break;

            

        caseNSOrderedSame:

           NSLog(@"str1等于 str2");

           break;

            

        caseNSOrderedDescending:

           NSLog(@"str1大于 str2");

           break;

            

       default:

           break;

    }

   //字符串以开头结尾比较

   if ([str1hasPrefix:@"字符"])

    {

        NSLog(@"字符串str1是以'字符'开头的");

    }

   if ([strhasSuffix:@"比较"])

    {

        NSLog(@"字符串str是以'比较'结尾的");

    }

    

    NSString *str3 =@"This is a String";

    NSString *str4 =@"this is a string";

    

   //不区分大小写比较

  NSComparisonResult unResult = [str3caseInsensitiveCompare:str4];

   switch (unResult)

    {

       case0:

           NSLog(@"str3 = str4");

           break;

            

       case -1:

           NSLog(@"str3 < str4");

           break;

            

       case1:

           NSLog(@"str3 > str4");

           break;

            

       default:

           break;

    }

    

    // NSCaseInsensitiveSearch :进行完全比较,区分大小写

    // NSNumericSearch:比较字符串的字符个数,而不是字符值

    [str3 compare:str4options:NSCaseInsensitiveSearch |NSNumericSearch];


    

5,   字符串的转换

   //字符串转化成基本数据类型

   NSString *intStr =@"123456";

   int num = [intStrintValue];

    

   NSString *floatStr =@"88.88";

   float fnum = [floatStrfloatValue];

   double dnum = [floatStrdoubleValue];

    

   //基本类型转化为字符串

   int a =10;

   NSString *iStr = [NSStringstringWithFormat:@"%d",a];

    

   float f =10.8;

   NSString *fStr = [NSStringstringWithFormat:@"%.f",f];

    

   double d =10.8888;

   NSString *dStr = [NSStringstringWithFormat:@"%.4f",d];

    

   char* cc ="cccc";

   NSString *cStr = [NSStringstringWithFormat:@"%s",cc];

    

   //字符串转化成大小写

   NSString *str =@"abCDefg";

    

    NSString *str1 = [struppercaseString];   // 全部转化为大写

   NSString *str2 = [strlowercaseString];   // 全部转化为小写

   NSString *str3 = [strcapitalizedString]; // 首字母转化为大写,其余为小写


    字符串转日期在以后介绍,这次先不介绍.


 

6,   字符串的替换

   //替换特定字符

    NSString *str =@"www.baidu.com";

    NSString *str1 = [strstringByReplacingOccurrencesOfString:@"om"withString:@"n"];

    

    // 删除特定字符

    NSString *str2 =@"www---.baidu.--com";

    NSString *str3 = [str2stringByReplacingOccurrencesOfString:@"-"withString:@""];

    

   //去掉字符串中的空格

    NSString *str4 =@"www .baidu .com";

    NSString *str5 = [str4stringByReplacingOccurrencesOfString:@" "withString:@""];

    

    // 设置替换的区域

   NSString *str6 = [strstringByReplacingOccurrencesOfString:@"w"withString:@"a"options:NSCaseInsensitiveSearchrange:NSMakeRange(1,1)];


   

7,  字符串转换

// 字符串转数组

+ (NSArray *)arrayFromString:(NSString *)string withMark:(NSString *)markString

{

   if ([stringisEqualToString:@""] || [markStringisEqualToString:@""])

    {

       returnnil;

    }

    

   NSArray *result = [stringcomponentsSeparatedByString:markString];

   return result;

}

// 数组转字符串

+ (NSString *)stringFromArray:(NSArray *)array withMark:(NSString *)markString

{

   if ((!array ||0 == array.count) || [markStringisEqualToString:@""])

    {

       returnnil;

    }

    

   NSString *result = [arraycomponentsJoinedByString:markString];

   return result;

}

8,  可变字符串

   //创建的两种方式,任选其一

    NSMutableString *mutStr = [[NSMutableStringalloc]init];

   NSMutableString *mutStr = [[NSMutableString alloc] initWithCapacity:0];

    

    // 初始化字符串

    [mutStrsetString:@"核桃"];

    

   //动态的在字符串末尾追加

    [mutStrappendString:@"圣女果"];

    

   //在指定的索引位置插入字符串

    [mutStr insertString:@"好吃!"atIndex:3];

    

   //删去指定范围的字符串

   NSRange rang = {2,3};

    [mutStr deleteCharactersInRange:rang];

    

   //替换指定范围的字符串

    [mutStr replaceCharactersInRange:rangwithString:@"abcd"];


     

这次的总结就先写到这里, 还有字符串的遍历,改变字符串中某个字符的颜色等, 会在下一次总结中一一道来.

0 0
原创粉丝点击