IOS ——OC——NSString的用法大全

"NSString *"这个数据类型代表一个NSString对象的指针,不是NSString对象本身。

"NSMutableString *"这个数据类型则是代表"NSMutableString"对象本身,这两者是有区别的。

这也是有的时候我们使用NSMutableString类型字符串时,要使用copy的原因,因为可能不想改变新的字符串时影响到旧的字符串的值。

一、字符串的创建方式:
1.快捷方式:
NSString *str = @"我在学习oc!";
 NSString *str2 = [[NSString alloc] initWithString: @"我在学习OC”];(这种方式已被NSString *str = @"我在学习oc!”取代)
2.alloc方式:
NSString *str2 = [[NSString alloc] initWithString: @"我在学习OC"];  
3.类方式:
 NSString *str4 = [NSString stringWithFormat:@"(通过类方法创建)我正在学习%@",@"oc"];
4.通过格式化符:
NSString *str3 = [NSString stringWithFormat: @"我在学习%@",@"OC"];
NSString 的使用: 
二、字符串的使用:
(1)字符串比较(比较的是地址)
        NSString *str5 = [NSString stringWithFormat:@"我在学习!"];
        NSString *str6 = [NSString stringWithFormat:@"我在学习!"];
        if(str5 != str6)
        NSLog(@"比较的是地址,这两个字符串的地址不相同!");
(2)字符串比较(比较的是内容判断是否相等!)
        NSString *str7 = [NSString stringWithFormat:@"我在学习!"];
        NSString *str8 = [NSString stringWithFormat:@"我在学习!"];
        BOOL isEqual=[str7 isEqualToString:str8];
        if(isEqual)
        NSLog(@"这两个字符串的内容一样!");
(3)比较字符串大小:
 NSString *str9 = [NSString stringWithFormat:@"张宇"];
        NSString *str10 = [NSString stringWithFormat:@"张三"];
        NSComparisonResult result = [str9 caseInsensitiveCompare:str10];
        if(result==NSOrderedAscending)
            NSLog(@"str9>str10(升序)");
        if(result==NSOrderedSame)
            NSLog(@"str9=str10(内容相同)");
        if(result==NSOrderedDescending)
            NSLog(@"str9<str10(降序)");
(4)访问字符串的长度:
 NSString *str11 = @"i o eru fhh f";
        long len=[str11 length];
        NSLog(@"str11= %ld",len);//(可以自动识别空格!)
(5)大小写转换:
NSString *str12 = @"hello Zhangy!";
        NSLog(@"%@",[str12 uppercaseString]);//全部转换成大写
        NSLog(@"%@",[str12 lowercaseString]);//全部转换成小写
        NSLog(@"%@",[str12 capitalizedString]); //单词首字母大写其它部分转小写
HELLO ZHANGY!
hello zhangy!
Hello Zhangy!
(6)转换基本数据类型:(将字符串型的数转换成具体的数字!)
1.字符串转换成整型 注意:只有字符串内容是整型时,才可以转换成功
NSString *str13 = @"11";
        int a = [str13 intValue];
        NSLog(@"%d",a);
2.字符串转换成浮点型 注意:只有字符串内容是数字时,才可以转换成功
NSString *str14 = @"11.11";
        float b = [str14 floatValue];
        NSLog(@"%f",b);
NSString *str15 = @"22";
        BOOL flag = [str15 boolValue];
        NSLog(@"%d",flag);
运行结果:
11
11.110000
1
(7)字符串的截取:
 
1.//分割字符串!(将字符串分割成为数组)
        NSString *str16 = @"abcde fghi";
        NSArray *array = [str16 componentsSeparatedByString:@" "];
        NSLog(@"arry=%@",array);
2.//访问指定位置上的字符:(字符串的遍历是从0开始的!)
        char c = [str16 characterAtIndex:3];
        NSLog(@"c=%c",c);
3.//截取从指定位置的字符到字符串末尾并赋给str17 (包括指定位置上的字符);
        NSString *str17 = [str16 substringFromIndex:2];
        NSLog(@"str17=%@",str17);
4.//从字符串的开头截取到指定位置的字符并赋给str18(不包括指定位置上的字符!)
        NSString *str18 = [str16 substringToIndex:3];
        NSLog(@"str18=%@",str18);
5.//截取字符串中指定范围的字符并赋给str19(包括指定范围上的字符)
        NSRange rang1 = NSMakeRange(1, 3);//指定一个范围;
        NSString *str19 = [str16 substringWithRange:rang1];//进行截取
        NSLog(@"str19=%@",str19);
6.//字符串拼接,将后面的拼到前面的字符串赋给一个新的字符串;
        NSString *str20 = @"hello ";
        NSString *str21 = @"word!";
        NSString *str22 =[str20 stringByAppendingFormat:@"%@",str21];
        NSLog(@"str22=%@",str22);//第一种方法
        NSString *str23 = [str20 stringByAppendingString:str21];//第二种方法
        NSString *str24 = [NSString stringWithFormat:@"%@%@",str20,str21];//第三种方法
        NSLog(@"str23=%@\nstr24=%@",str23,str24);
 
7.//给定子串在指定的字符串中的位置和子串的长度。
        NSString *str25 = @"123456789@qq.com";
        NSString *str26 = @"qq.com";
        NSRange rang2 = [str25 rangeOfString:str26];
        if (rang2.location != NSNotFound)
        {
            NSLog(@"找到了该子串!");
            NSLog(@"位置 %ld 长度 %ld ",rang2.location,rang2.length);         }
8.//字符或者子串的替换。
        NSString *str27 = [str25 stringByReplacingOccurrencesOfString:@"123" withString:@"333];//将123替换成333.
        NSLog(@"str27 = %@",str27);
9.判断原有字符串中是否包含某个子串;
NSRange range = [str25 rangeOfString:@"@"];
    if (range.location != NSNotFound) {
        return YES;
    }
    return NO;
}
[str25 containsString:@"@]//也可以用于判断是否包含
 
运行的结果:
 str = 我在学习oc!
 
比较的是地址,这两个字符串的地址不相同!
 这两个字符串的内容一样!
 str9<str10(降序)
 str11= 13
 HELLO LIU GUAN!
 hello liu guan!
 Hello Liu Guan!
 11
 11.110000
 0
arry=(
"abcde fghi"
)
c=d
str17=cde fghi
str18=abc
str19=bcd
str22=hello word!
str23=hello word!
找到了该子串!
位置
10 长度 6
例:
2、编写程序,将”Hello World and Sunshine.”字符串中的”World”替换为”iBokanWisdom”,并将替换前和替换后的字符串输出
 
使用NSString两种替换方法完成
 
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //第一种方法
        NSString *str1 = @"Hello World and Sunshine.";
        NSString *str2 = [NSString stringWithFormat:@"iBokanWisdom "];
        NSString *str3 = [str1 stringByReplacingOccurrencesOfString:@"World" withString:str2];
        NSLog(@"替换前str1=%@",str1);
        NSLog(@"替换后str3=%@",str3);
        //第二种方法
        NSMutableString *str4 = [NSMutableString stringWithString:@"Hello World and Sunshine."];
        NSLog(@"替换前str4=%@",str4);
        NSRange range = NSMakeRange(6, 6);
        [str4 deleteCharactersInRange:range];
        [str4 insertString:str2 atIndex:6];       
        NSLog(@"替换后str4=%@",str4);
    }
    return 0;
}
运行结果:
 替换前str1=Hello World and Sunshine.
 
替换后str3=Hello iBokanWisdom  and Sunshine.
 
替换前str4=Hello World and Sunshine.
 替换后str4=Hello iBokanWisdom and Sunshine.
posted @ 2015-04-05 13:18  #零下一度&  阅读(195)  评论(0编辑  收藏  举报