OC字符串

1.import比#include的优点:避免重复引用同一.h头文件。

2.计算机读取字符串的方式:起始位置location、起始到结束的长度length

3.url分为:文件路径、网络路径(地址)。

4.初始化中:实例方法都是以init开头。类方法以类名开头(如:string、array、dictionary、set)。

5.容量不可变:带返回值,产生新内存。

6.容量可变:操作同一块内存(改变原有内容),内存不够按容量值增加;不用产生新内存,时间快,但多出来的空间会浪费,不带返回值。

7.%p,对象的地址。

8.转为字符串:NSStringFormRange(range对象);字符串转为整形:integerValue。

一.初始化(”特有“实例方法、类方法选择)

String分配在静态区,没分配内存。

Format:可格式化,支持其它数据类型,并将其转为字符串类型。

判断字符串是否为空用(.length > 0)

二.字符串对象追加

stringByAppendingFormat:

三.截取字符串对象的子字符串

1.从loc到最后一个

substringFromIndex:loc

2.从loc到指定长度

NSRange   r = {loc,len};

substringWithRange:r

四.查找字符串对象的子字符串起始位置、长度

rangeOfString:@" " 

      options:

.location ==  NSNotFound(为找不着)

五.读取url

stringWithContentsOfFile

stringWithContentsOfURL

六.比较字符串

字符串内容比较:isEqualToString:

字符大小比较:compare :( 等同减号作用,返回值是-1,0,1)

七.大小写转换

lowercaseString

uppercaseString

八.字符串替换、分割为数组

stringByReplacingOccurrencesOfString:

              withString:

stringByReplacingCharactersInRange:

              withString:

componentsSeparatedByString

九.option:

NSCaseInsensitiveSearcher:不区分大小写字符。

NSDiacriticInsensitiveSearch:忽略-后内容作比较。(@"o-mygod" == @"o")

十.容量可变

1.初始化

[NSMutableString stringWithCapacity:];

API。。。。。。

    /*
    NSString *str1 = [[ NSString alloc]initWithString: @"jobs"]; //分配在静态区,与NSString *str1 = @"jobs";是一样的。
    NSString *str2 = [[NSString alloc]initWithFormat:@"%d",123];
    NSString *str3 = [[ NSString alloc]initWithString: @"jobs"];
    NSString *s = [[NSString alloc]initWithFormat:@"%d",123];
    
    NSLog(@"str1 = %p",str1);
    NSLog(@"str2 = %p",str2);
    NSLog(@"str3 = %p",str3);
    NSLog(@"s = %p",s);
    
    NSLog(@"str1 = %d",str1.retainCount);//等于-1的原因,没分配内存
    NSLog(@"str2 = %d",str2.retainCount);
    
    NSString *str4 = [NSString stringWithFormat:@"%d",567];//静态方法,便利构造器autorelease
    NSString *str5 = [NSString stringWithFormat:@"gates"];
    
    NSString *str6 = [str4 stringByAppendingString:str5];//追加字符串产生新的字符串,str4不变
    NSString *str7 = [str4 stringByAppendingFormat:@"%d",89];
    
    //求子字符串
    NSString *str8 = @"iphone5s5s";
    NSString *str9 = [str8 substringFromIndex:6];//从lcoation该下标开始到结束,输出5s5s
    NSString *str10 = [str8 substringToIndex:6];//不包括目前的(从下标0开始到该下标的前一位结束,输出iphone)
    
    NSRange r1 = {5,1};
    NSString *str11 = [str8 substringWithRange:r1];
    
    //查找字符串
    NSRange r2 = [str8 rangeOfString:@"5s"
                             options: NSBackwardsSearch];
    //NSRange r2 = [str8 rangeOfString:@"abc"];
    if (r2.location == NSNotFound)
    {
        NSLog(@"没找着。。。。。。");
    }
    
    NSLog(@"r2:%@",NSStringFromRange(r2));
    //
    */
    /*
     //读取文件
     NSString *path = [[NSBundle mainBundle] pathForResource:@"SensitiveWord"//文件名
     ofType:nil];//文件后缀
     
     NSString *str12 = [NSString stringWithContentsOfFile:path
     encoding:NSUTF8StringEncoding
     error:nil];//返回2个值
     NSLog(@"str12 = %@",str12);
     //读取网络
     // NSURL *url = [NSURL fileURLWithPath:path];
     NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/"];
     NSString *str13 = nil;
     str13 = [NSString stringWithContentsOfURL:url
     encoding:NSUTF8StringEncoding
     error:nil];
     NSLog(@"str13 = %@",str13);
     
     
     //转换
     NSString *str14 = @"123";
     int num1 = [str14 integerValue];
     NSLog(@"num1 = %d",num1);
     //比较字符串,
     if ([str14 isEqualToString:@"123"])
     {
     NSLog(@"two string is same");
     }
     
     NSComparisonResult r = [str14 compare:@"122"];
     NSLog(@"r = %d",r);
     //大小写转换
     NSString *str15 = @"abC";
     NSString *str16 = [str15 lowercaseString];//uppercaseString
     NSLog(@"str16 = %@",str16);
     
     */
    //子字符替换
 
    NSLog(@"%@",[@"hello world" stringByReplacingOccurrencesOfString:@"h"
                                                          withString:@"WW"]);
    
    NSLog(@"%@",[@"hello world" stringByReplacingCharactersInRange:NSMakeRange(3, 5)
                                                        withString:@"xxxxx"]);
    
    NSLog(@"%@",[@"super.man.xxx" componentsSeparatedByString:@"."]);
    
    
    
    //可变字符串:操作同一个地址,针对同一个内存,不用产生新内存,时间快,但多出来的空间会浪费
    //NSMutableString *mstr1 = [NSMutableString string];
    NSMutableString *mstr1 = [NSMutableString stringWithCapacity:10];//容量不够时,每次增加10
    [mstr1 appendString:@"jobs"];
    [mstr1 appendFormat:@"%d",123];
    NSLog(@"mstr1 = %@",mstr1);
    
    NSRange r3 = {0,4};
    [mstr1 deleteCharactersInRange:r3];
    NSLog(@"mstr1 = %@",mstr1);
原文地址:https://www.cnblogs.com/huen/p/3524438.html