//字符串的创建
NSString *str1=@"123";//创建一个字符串常量
NSString *str2 = [[NSString alloc] initWithString:@"123"];
NSString *str3 = [[NSString alloc] initWithString:str1];
NSString *str4 = [NSString stringWithString:@"123"];
NSString *str5 = [NSString stringWithString:str1];
/*上面5种方法创建的区别:第2,4种一般简化成第一种,第3,5种后面可以是对象名str1,也可以是字符串常量,但他们都是对象,第3,5的区别是一个是实例方法创建,一个 是类方法创建(5是类方法创建)
*/
//创建格式化字符串
//与上面的区别,格式化字符串可以是基本数据类型,也可以是对象,但上面的只能是对象(基本数据类型不是对象)
/*
创建格式化字符串,格式化字符串创建在堆区,而快速创建的字符串存放在常量区
*/
int a =2;
NSString *str6 =[[NSString alloc] initWithFormat:@"%d",a ];
float f=1.2;
NSString *str7 = [NSString stringWithFormat:@"%.1f",f];
NSString *str = @"123";
NSString *str8 = [NSString stringWithFormat:@"%@",str];
NSLog(@"%@",str6);
NSLog(@"%@",str7);
NSLog(@"%@",str8);
/*
测试2个字符串内容是否相同,用方法 str1 isEqualToString:str2,相等返回1/YES.
*/
if ([str3 isEqualToString:str5])
{
NSLog(@"两个字符串内容相等");
}
/*
比较2个字符串是否相同,用"==",这里实际上比较的是2个字符串的地址是否相同,这里str9与str10都是指向@"hehe"的地址,故他们相同,在oc中,声明的对象一般都是存放数据的地址
*/
NSString *str9 = @"hehe";
NSString *str10 = @"hehe";
NSString *str11 = [NSString stringWithFormat:@"hehe"];
NSString *str12 = [NSString stringWithFormat:@"hehe"];
if (str9 == str10)
{
NSLog(@"两个字符串对象相等");//这里的对象换句话说就是存放内容的地址。为什么str9和str10的对象相同,而str9,str11,str12的对象不同?因为str9与str10存放在常量区,str11与str12存放在堆区,常量区相同内容的地址是同一个,只是变量名不同,而堆区是手动分配内存,不同的变量名地址不同,他们存放的地址也就???
}
else
{
NSLog(@"两个字符串对象不相同");
}
if (str11 == str12)
{
NSLog(@"两个字符串对象相等");
}
else
{
NSLog(@"两个字符串对象不相同");
}
if (str9 == str11)
{
NSLog(@"两个字符串对象相等");
}
else
{
NSLog(@"两个字符串对象不相同");
}
//比较字符串的大小,用caseInsensitiveCompare方法,该方法的返回值是-1,0,1,-1代表升序,1代表降序
NSString *str13 = [[NSString alloc] initWithFormat:@"a"];
NSString *str14 = [[NSString alloc] initWithFormat:@"b"];
NSComparisonResult result = [str13 caseInsensitiveCompare:str14];
NSLog(@"%ld",result);
//求字符串的长度
NSLog(@"%ld",[str10 length]);
//改变字符串的大小写
NSString *str15 = @"hello WORLD";
NSLog(@"%@",[str15 uppercaseString]);//全部大写
NSLog(@"%@",[str15 lowercaseString]);//全部小写
NSLog(@"%@",[str15 capitalizedString]);//首字母大写,其余小写
//字符串转化成数组
NSString *str16 = @"abc bcd cdf";
NSArray *arr1 = [str16 componentsSeparatedByString:@" "];
NSLog(@"%@",arr1);
//截取字符串
NSString *str17 = @"abcdefg";
NSString *str18 = [str17 substringFromIndex:2];//从下标为2截取到末尾
NSString *str19 = [str17 substringToIndex:5];//从头截取到下标为5的位置
NSString *str20 =[str17 substringWithRange:NSMakeRange(2, 4)];//从下标为2的地方截取长度为4的字符串
NSLog(@"%@",str18);
NSLog(@"%@",str19);
NSLog(@"%@",str20);
//字符串的拼接
NSString *str21 = @"123";
NSString *str22 = [[NSString alloc] initWithFormat:@"%@%@",str17,str21];
NSString *str23 = [str17 stringByAppendingString:str21];
NSString *str24 = [str17 stringByAppendingFormat:@"%@",str21];
NSLog(@"%@",str22);
NSLog(@"%@",str23);
NSLog(@"%@",str24);
//查询字符串对象
NSRange range = [str23 rangeOfString:@"fg1"];
if (range.location!= NSNotFound)
{
NSLog(@"字符串已经找到!");
}
//插入字符串
NSMutableString *str25 = [NSMutableString stringWithString:@"字符串"];
[str25 insertString:@"可变" atIndex:0];//在指定位置插入字符串
NSLog(@"%@",str25);
//删除字符串
[str25 deleteCharactersInRange:NSMakeRange(1, 2)];//删除指定范围的字符串
NSLog(@"新的字符串为:%@",str25);
//替换字符串
[str25 replaceCharactersInRange:NSMakeRange(0, 2) withString:@"hehe"];
NSLog(@"最新的字符串为:%@",str25);