// 1、字符串的创建
NSString * string1 = @"123abc";
NSString * string2 = [NSString stringWithFormat:@"123%@",string1];//@"123123abc"
NSString * string3 = [[NSString alloc] init];
string3 = @"abcd";
NSString * string4 = [[NSString alloc] initWithString:@"1234"];
char *Cstring = "我是字符串";
NSString * string5 = [[NSString alloc] initWithUTF8String:Cstring];
NSString * string6 = [[NSString alloc] initWithUTF8String:"abcd"];
// @property (nonatomic, strong) NSString* strongedString;
// @property (nonatomic, copy) NSString* copyedString;
//在不可变字符串赋值中,strong和copy都是没有问题的,而在可变数组赋值中,我们大多数情况下不想因为赋值而改变了原有字符串的属性,所以我们日常工作中我们使用最多的还是copy属性。但是根据实际情况不同,也可以使用strong属性。
// 2、字符串比较是否相同
NSString * string7 = @"abcd";
NSString * string8 = @"abcd";
NSString * string9 = @"Abcd";
[string7 isEqualToString:string8];//YES
[string7 isEqualToString:string9];//NO
// 3、compare 比较字符串升序、相同还是降序,比较原理:首先比较第一个字符(ASCII码比较),如果是升序就为升序,如果相同比较下一个字符。。。
NSString *str1 = @"abcd";
NSString *str2 = @"ABCD";
NSComparisonResult result = [str1 compare:str2];
// caseInsensitiveCompare 忽略大小写比较
// NSComparisonResult result2 = [s7 caseInsensitiveCompare:s8];
if (result == NSOrderedAscending) {
NSLog(@"升序");
} else if(result == NSOrderedSame) {
NSLog(@"相同");
} else if(result == NSOrderedDescending) {
NSLog(@"降序");
}
// 4、length 计算字符串字符的个数
NSString *str3 = @"123456";
NSString *str4 = @"12345678";
NSUInteger len1 = [str3 length];//str3.length
NSUInteger len2 = [str4 length];
NSLog(@"len1 = %ld ,len2 = %ld", len1, len2);
//————————————————————————————字符串的转化 ————————————————————————————
/*
1、大小写的转换
2、与基本数据类型的转换
*/
NSString *str5 = @"hello WORLD";
NSString *str6 = [str5 uppercaseString]; // 全部转为大写
NSString *str7 = [str5 lowercaseString]; // 全部转为小写
NSString *str8 = [str5 capitalizedString]; // 首字母大写
NSLog(@"转为大写:%@",str6);
NSLog(@"转为小写:%@",str7);
NSLog(@"转为首字母大写:%@",str8);
// 6、转为基本数据类型,只能是数字字符串可以转化
NSString *str9 = @"1234";
int value1 = [str9 intValue];
float value2 = [str9 floatValue];
double value3 = [str9 doubleValue];
BOOL value4 = [str9 boolValue];
NSLog(@"value1 = %d",value1);
NSLog(@"value2 = %f",value2);
NSLog(@"value3 = %lf",value3);
NSLog(@"value4 = %d",value4);
NSString * string91 = @"123abc1234";
NSInteger value5 = [string91 integerValue];//123 如果不是纯数字的字符串,转换成数字类型之后只会显示字符串最前边的数字
//————————————————————————————字符串的拼接——————————————————————————————
NSString *str10 = @"11";
NSString *str11 = @"22";
NSString *str12 = [[NSString alloc] initWithFormat:@"%@%@",str10,str11];
NSLog(@"str12 :%@",str12);//1122
NSString *str13 = [str10 stringByAppendingString:str11];
NSLog(@"str13 :%@",str13);//1122
NSString *str14 = [str10 stringByAppendingFormat:@"%@33",str11]; //可以追加
NSLog(@"str14 :%@",str14);//112233
//————————————————————————————字符串的查找替换———————————————————————————
// 方式一:
NSString *str15 = @"[email protected]";
//rangeOfString 查找字符串所在的位置 返回NSRange类型
NSRange range = [str15 rangeOfString:@"@qq.com"];
//NSNotFound 用于判断是否找到
if (range.location != NSNotFound) {
NSLog(@"包含字符串");
} else{
NSLog(@"不包含字符串");
}
// 方式二:查找并且替换
NSString *newString = [str15 stringByReplacingOccurrencesOfString:@"qq.com" withString:@"163.com"];
NSLog(@"newString :%@",newString);
//————————————————————————————字符串的截取———————————————————————————
NSString *str16 = @"1234567890";
// substringToIndex:从字符串开始截取到指定的位置,是从0开始
NSLog(@"截取的:%@",[str16 substringToIndex:2]);
// substringFromIndex:从指定位置截取到字符串结尾
NSLog(@"截取的1:%@",[str16 substringFromIndex:2]);
// substringWithRange:截取指定的范围
NSRange range1 = {1,3};
// NSRange range2 = NSMakeRange(1, 3); // NSrange的两种创建方式
NSLog(@"截取的2:%@",[str16 substringWithRange:range1]);
// 取指定位置的字符
char c = [str16 characterAtIndex:1];
NSLog(@"c = %c",c);
/*=============================NSMutableString(可变字符串)常用方法========================*/
// 1、————————————————————————————可变字符串的创建———————————————————————————
NSMutableString *mstr1 = [[NSMutableString alloc] initWithFormat:@"zxcvbnm"];
NSMutableString *mstr2 = [NSMutableString stringWithFormat:@"asdfghjkl"];
// NSMutableString *ms3 = @"hjkl;"; 可变的字符串不能这么写
// 2、————————————————————————————可变字符串的插入、删除、追加、替换———————————————————————————
// insertString:atInde: 将字符串插入到指定的位置,不需要返回新的字符,这是跟不可变字符串的区别
[mstr1 insertString:@"1111" atIndex:1];
NSLog(@"ms1 :%@",mstr1);
// deleteCharactersInRange :删除指定范围的字符串
NSRange range3 = {2,3};
[mstr2 deleteCharactersInRange:range3];
NSLog(@"mstr2 :%@",mstr2);
//字符串的拼接
[mstr2 appendString:@"00"];
[mstr2 appendFormat:@"%d99",200];// 可以追加
NSLog(@"mstr2 :%@",mstr2);
//字符串替换
NSMutableString *mstr3 = [[NSMutableString alloc] initWithFormat:@"YYXXZZ"];
NSRange range4 = [mstr3 rangeOfString:@"ZZ"];
// replaceCharactersInRange:withString: 将指定范围的字符串替换
[mstr3 replaceCharactersInRange:range4 withString:@"VV"];
NSLog(@"mstr3:%@",mstr3);
// 设置新的字符串 跟直接赋值效果一样,是用新的字符串内容将原有的字符串内容替换掉
[mstr3 setString:@"000000000"];
NSLog(@"new_mstr3:%@",mstr3);
// 1.字符串转字典
NSString * jsonString = @"123";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError * err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
// 字符串的扩展中可以这样写
// NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
// __autoreleasing NSError* error = nil;
// id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
// if (error != nil) return nil;
// return result;
// 2.字典转字符串
NSError * parseError;
NSData * jsonData1 = [NSJSONSerialization dataWithJSONObject:dic
options:NSJSONWritingPrettyPrinted
error:&parseError];
NSString * str = [[NSString alloc] initWithData:jsonData1 encoding:NSUTF8StringEncoding];