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:@"我在学习!"];
NSString *str6 = [NSString stringWithFormat:@"我在学习!"];
if(str5 != str6)
NSLog(@"比较的是地址,这两个字符串的地址不相同!");
(2)字符串比较(比较的是内容判断是否相等!)
NSString *str7 = [NSString stringWithFormat:@"我在学习!"];
NSString *str8 = [NSString stringWithFormat:@"我在学习!"];
BOOL isEqual=[str7 isEqualToString:str8];
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)
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 uppercaseString]);//全部转换成大写
NSLog(@"%@",[str12 lowercaseString]);//全部转换成小写
NSLog(@"%@",[str12 capitalizedString]); //单词首字母大写其它部分转小写
HELLO ZHANGY!
hello zhangy!
hello zhangy!
Hello Zhangy!
(6)转换基本数据类型:(将字符串型的数转换成具体的数字!)
1.字符串转换成整型 注意:只有字符串内容是整型时,才可以转换成功
NSString *str13 = @"11";
int a = [str13 intValue];
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
11.110000
1
(7)字符串的截取:
1.//分割字符串!(将字符串分割成为数组)
NSString *str16 = @"abcde fghi";
NSArray *array = [str16 componentsSeparatedByString:@" "];
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];//进行截取
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];//第三种方法
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); }
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;
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
比较的是地址,这两个字符串的地址不相同!
这两个字符串的内容一样!
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
str27 = 6666456789@qq.com
例:
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;
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.
替换后str3=Hello iBokanWisdom and Sunshine.
替换前str4=Hello World and Sunshine.
替换后str4=Hello iBokanWisdom and Sunshine.
感谢您的访问!
若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/