现在的位置: 首页 > 综合 > 正文

OC之NSString详解

2018年01月23日 ⁄ 综合 ⁄ 共 5346字 ⁄ 字号 评论关闭

/1.直接赋值,常量池

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

    NSLog(@"%d",str.retainCount);

    

    //2.先开辟空间,初始化,再赋值,常量池

   NSString * str = [[NSStringalloc]init];

    str = @"this is a string";

    NSLog(@"%d",str.retainCount);

    

    //3.开辟空间,调用初始化方法,常量池

   NSString * str = [[NSStringalloc]initWithString:@"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //4.UTF-8编码格式的字符串创建字符串对象,未在常量池中

   NSString * str = [[NSStringalloc]initWithUTF8String:"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //5.创建格式化的字符串(占位符是%加上代表类型的字符组成),未在常量池中

   NSString * str = [NSStringstringWithFormat:@"%@",@"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //6.从文件读取字符串

    NSString * path =@"/Users/ibokan/Desktop/test.txt";

    //如果在枚举里没有对应的编码,则需要自己转码

    //NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

   NSError * error =
nil;

   NSString * str = [NSString stringWithContentsOfFile:path encoding:4 error:&error];

   if (error !=
nil) {

       NSLog(@"读取文件失败,错误信息:%@",[error
localizedDescription]);

    }else{

        NSLog(@"读取成功,文件内容为:%@",str);

    }

    //7.URL读取字符串,不在常量池里

   NSError * error =
nil;

    //url很广泛,可以用于http地址,可以ftp地址,可以文件地址

    NSURL * url = [NSURLURLWithString:@"http://www.baidu.com"];

    //NSURL * url = [NSURL URLWithString:@"file:////Users/ibokan/Desktop/test.txt"];

    NSString * str = [NSStringstringWithContentsOfURL:url
encoding:NSUTF8StringEncodingerror:&error];

   if (error !=
nil) {

       NSLog(@"读取文件失败,错误信息:%@",[error
localizedDescription]);

    }else{

       NSLog(@"读取成功");

    }

    NSLog(@"\n%d",str.retainCount);

字符串写入文件:

    //字符串写入文件。path为服务端地址,也可以向服务端写入,但是一般不这么用

    NSString * str =@"that is a string";

   NSError * error =
nil;

    NSString * path =@"/Users/ibokan/Desktop/baidu.txt";

    [str writeToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:&error];

   if (error !=
nil) {

       NSLog(@"保存文件失败,错误信息:%@",[error
localizedDescription]);

    }else{

       NSLog(@"保存成功");

    }

字符串除了拿来显示,还可以用来比较,匹配,查找:

    //1.字符串比较,调用Cstrcmp函数,s1>s2返回值>0
,s1=s2 返回值=0 , s1<s2
返回值
<0

   char * str1 ="string";

   char * str2 ="strjng";

   printf("%d",strcmp(str1, str2));

    //2.NSStringcompare方法,类似于Cstrcmp函数,s1>s2返回值>0,
s1=s2 返回值=0, s1<s2
返回值
<0

    NSString * str1 =@"string";

    NSString * str2 =@"sting";

    NSLog(@"%d",[str1compare:str2]);

    //3.NSStringcompare方法,忽略大小写比较

    NSString * str1 =@"string";

    NSString * str2 =@"String";

    NSLog(@"%d",[str1caseInsensitiveCompare:str2]);

    //4.NSStringcompare方法,忽略大小写比较长度,options的参数来用

    NSString * str1 =@"string";

    NSString * str2 =@"Strings";

    NSLog(@"%d",[str1compare:str2options:NSNumericSearch|NSCaseInsensitiveSearch]);

    

    //5.两个字符串进行匹配,str1有包含str2,则返回一个nsrange结构体。只能简单匹配,更复杂的需要用正则。

    NSString * str1 =@"That is a string";

   NSString * str2 =
@"string";

   NSRange strRange = [str1
rangeOfString:str2];

   NSLog(@"起始位置为:%d,长度为:%d",strRange.location,strRange.length);

    //6.查找前缀,一定是从头开始,类似于正则的^

    NSString * str =@"http://www.baidu.com";

   NSLog(@"%i",[strhasPrefix:@"www"]);

    //7.查找后缀,类似于正则的$,用于匹配文件类型非常好用

    NSString * str =@"http://www.baidu.com";

   NSLog(@"%i",[strhasSuffix:@"com"]);

    //8.取拓展名

   NSString *Path =
@"~/json.txt";

    NSLog(@"Extension:%@",[PathpathExtension]);

    //9.取缩写,不知道什么用,留个记号

   NSString *Path =
@"~/json.txt";

   NSString *absolutePath = [Path
stringByExpandingTildeInPath];

   NSLog(@"absolutePath:%@",absolutePath);

    NSLog(@"Path:%@",[PathstringByAbbreviatingWithTildeInPath]);

字符串截取操作:

    //1.从前面开始截取字符串到第几个字符

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1
substringToIndex:3];

   NSLog(@"string2:%@",string2);

    //2.从第几个字符开始截取字符串

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1
substringFromIndex:3];

   NSLog(@"string2:%@",string2);

    //3.从第几个字符开始截取几个字符串

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1
substringWithRange:NSMakeRange(10,3)];

   NSLog(@"string2:%@",string2);

字符串的拼接操作:

    //1.连接字符串

    NSString * str1 =@"This is a string";

   NSString * str2 =
@"Hello world";

   NSString * str3 = [str1
stringByAppendingString:str2];

   NSLog(@"str3:%@",str3);

    //2.连接字符串,使用格式符

    NSString * str1 =@"This is a string";

   NSString * str2 =
@"Hello world";

   NSString * str3 = [str1
stringByAppendingFormat:@",%d,%@",123,str2];

   NSLog(@"str3:%@",str3);

接下来是插入,这里要注意,这里的是可变字符串:

    //1.可变字符串,插入一个新字符串,这里要注意下标不要越界

    NSMutableString * str = [[NSMutableStringalloc]initWithCapacity:0];

    [str insertString:@"this is a mutableString"atIndex:0];

    [str insertString:@"1233"atIndex:1];

   NSLog(@"%@",str);

    //2.可变字符串,追加一个字符串

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this
is a string"
];

    [str appendString:@"HELLO,WORLD"];

   NSLog(@"%@",str);

    //3.可变字符串,赋值

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this
is a string"
];

    [strsetString:@"123"];

   NSLog(@"%@",str);

    //4.可变字符串,删除一个范围

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this
is a string"
];

    [str deleteCharactersInRange:NSMakeRange(1,2)];

   NSLog(@"%@",str);

    //5.可变字符串,替换一个范围的字符串

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this
is a string"
];

    [str replaceCharactersInRange:NSMakeRange(1,2)
withString:[NSStringstringWithFormat:@"99999"]];

   NSLog(@"%@",str);

    //6.可变字符串,替换所有出现过的字符串,在制定长度里

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this
is a string"
];

    int result = [strreplaceOccurrencesOfString:@"s"withString:@"123"options:NSCaseInsensitiveSearchrange:NSMakeRange(0,13)];

    NSLog(@"替换了%d个字符串,新的字符串为:%@",result,str);

    //1.修改大小写的方法

    NSString *string1 =@"A String";

    NSString *string2 =@"StrIng,this is a string";

    //全部改大写

    NSLog(@"string1:%@",[string1uppercaseString]);

    //全部改小写

    NSLog(@"string2:%@",[string2lowercaseString]);

    //首字母大写,其余小写

    NSLog(@"string2:%@",[string2capitalizedString]);

抱歉!评论已关闭.