一、不可变字符串(NSString)
1、初始化方法
NSString *string1 = [[NSString alloc] initWithFormat@"Hello World!"];
2、便利构造器方法
NSString *string2 = [NSString stringWithString:@"Hello World!"];
通常不建议这样写,原因是比较繁琐,通常编译器会提示这样写是多余的,推荐写法为:NSString *string4 = @"Hello World!"
3、根据C语言的字符串创建OC字符串对象
char *cString = "Hello World!";
NSString *string3 = [[NSString alloc] initWithCString:cString encoding:NSUTF8StringEncoding];//初始化方法
NSString *string4 = [NSString stringWithCString:cString encoding:NSUTF8StringEncoding];//便利构造器方法
4、根据对应路径文本文档中的内容创建OC字符串对象
NSString *string5 = [[NSString alloc] initWithContentsOfFile:@"对应路径.txt" encoding:NSUTF8StringEncoding error:nil];
NSString *string6 = [NSString stringWithContentsOfFile:@"对应路径.txt" encoding:NSUTF8StringEncoding error:nil];
5、求字符串对象的长度
[string4 length]; 也可以这样写: string4.length
6、通过循环遍历的方式打印字符串对象
for (int i = 0; i < string4.length; i++) {
//characterAtIndex:该方法可用获取方法调用的字符串对象指定下标的字符,下标从0到length -1
char character = [string4 characterAtIndex:i];
NSLog(@"%c",character);
}
7、比较两个字符串对象是否相同(返回值为BOOL类型)
BOOL result = [string2 isEqualToString:string4];
NSLog(@"%@",result ? @"YES" : @"NO");
8、比较两个字符串对象的大小顺序
NSString *string7 = @"abc";
NSString *string8 = @"abd";
NSComparisonResult compareResult = [string7 compare:string8];
NSLog(@"%ld",compareResult);
结果为-1表示调用方法的字符串比参数字符串小,为升序。0表示一致。1表示调用方法的字符串比参数字符串大,为降序。
9、字符串的截取方法
(1)获取从指定下标开始(包含指定下标)到字符串结尾的子字符串。
NSString *subString1 = [string2 substringFromIndex:3];
(2)获取从原字符串起始下标到指定下标(不包含指定下标)的子字符串。
NSString *subString2 = [string2 substringToIndex:2];
(3)根据给定的范围截取字符串
NSRange range = NSMakeRange(1, 2);
NSString *subString3 = [string2 substringWithRange:range];
结构体NSRange包含两个长整型成员,分别为起始下标和长度。如果使用range截取子字符串,则表示从指定下标开始截取指定长度达到子字符串并返回。
10、字符串的拼接方法
(1)拼接指定字符串
NSString *appendString1 = [string2 stringByAppendingString:@"haha"];
(2)拼接指定(格式)的字符串
NSString *appendString2 = [string2 stringByAppendingFormat:@"%d %c %d",3,'+',5];
11、字符串的替换方法
(1)通过指定的参数字符串替换对应范围的字符串
NSString *replaceString = [string2 stringByReplacingCharactersInRange:NSMakeRange(1, 3) withString:@"haha"];
(2)将原字符串中的一段字符串替换为指定的一段字符串
NSString *textString = @"abcdefghijkl";
NSRange replaceRange = [textString rangeOfString:@"efg"];//获取指定字符串在原字符串中的范围。
NSString *resultStr = [textString stringByReplacingCharactersInRange:replaceRange withString:@"abc"];
12、判断字符串是否包含指定字符串
BOOL result1 = [string2 containsString:@"am"];
NSLog(@"%@",result1 ? @"YES" : @"NO");
13、字符串的转换
NSLog(@"%@",string2.uppercaseString);//将字符串全部转换为大写
NSLog(@"%@",string2.lowercaseString);//将字符串全部转换为小写
NSLog(@"%@",string2.capitalizedString);//将字符串首字母全部转换为大写
14、判断指定字符串是否有前缀字符串
BOOL result2 = [string3 hasPrefix:@"http"];
NSLog(@"%@",result2 ? @"YES" : @"NO");
15、判断指定字符串是否有后缀字符串
BOOL result3 = [string3 hasSuffix:@".com"];
NSLog(@"%@",result3 ? @"YES" : @"NO");
二、可变字符串(NSMutableString)
1、根据不可变字符串创建同内容的可变字符串对象。
NSMutableString *mutableStr1 = [NSMutableString stringWithString:string2];
2、可变字符串的拼接
[mutableStr1 appendFormat:@"haha"];
[mutableStr1 appendFormat:@"%d %c %d",3,'+',5];
3、为可变字符串在指定下标插入字符串的方法
[mutableStr1 insertString:@"beijing" atIndex:0];
4、为可变字符串删除指定范围的字符串
NSRange deleteRange = [mutableStr1 rangeOfString:@"beijing"];
[mutableStr1 deleteCharactersInRange:deleteRange];
5、可变字符串提供的用于替换指定范围的字符为给定的字符串的方法。
[mutableStr1 replaceCharactersInRange:NSMakeRange(1, 3) withString:@"hehe"];
总结:不可变字符串不能直接在原有字符串对象中操作,必须重新定义一个新的字符串对象接收结果;而可变字符串可以直接在原字符串中操作,操作后的结果会覆盖原有字符串,并返回新值。