Objective-C 中处理字符串的两个核心类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能再动态的更改,只能给这个字符串重新赋值。而NSMutableString(可变字符串)创建赋值以后可以动态在该字符串上更改内容与长度。
普通字符串
//这种创建方式会在堆区开辟空间并储存。
NSString *str = [[NSString alloc] initWithFormat:@"我今年%d岁了",18];
NSString *name1 = [NSString stringWithFormat:@"小明"];
//下面的是字符串的字面量形式(更直观),方便程序员书写,也叫语法糖
NSString *name2 = @"小明";
//读取字符串的长度
NSInteger length = name2.length;
//获取字符串中的字符
unichar c = [name1 characterAtIndex:0];
NSLog(@"----%c",c);
上面的代码中,name1是创建在堆区,name2是创建在常量区,他们两个的指针地址不同,所以如果我们要判断两个字符串的内容是否相同可以用isEqualToString方法。
if ([name1 isEqualToString:name2]) {
NSLog(@"字符串内容相同");
}else {
NSLog(@"字符串内容不同");
}
if语句的输出
**字符串的比较**
//如果前面大于后面输出1,如果前面小于后面输出-1,如果相等输出0;
NSComparisonResult compareResult = [@"a" compare:@"abc"];
**字符串的截取**
//从索引值为1的位置截取字符串,(包含1的位置),一直截到最后,
NSString *substring = [@"abcdefg" substringFromIndex:1];
//从字符串开始截取到下标为1的元素(不包括下标位置的元素)
NSString *substring1 = [@"abcdefg" substringToIndex:1];
//截取某一段字符串(range代表一个范围,location代表截取的开始位置,length代表截取的长度);
NSString *substring2 = [@"abcdefg" substringWithRange:NSMakeRange(1, 2)];
字符串的截取.png
**字符串的拼接**
//在原有的字符串后面追加一个字符串
NSString *appendString = [@"abc" stringByAppendingString:@"def"];
//在原有的字符串后面追加数字
NSString *appendString1 = [@"abc" stringByAppendingFormat:@"%d",123];
**字符串的替换**
//方法一:
NSString *contentString = @"hi,小明";
//获取’小明‘在contentString中所占的范围
NSRange range = [contentString rangeOfString:@"小明"];
if (range.length != 0) {
//替换该范围的字符串为@“小红”
NSString *replaceString = [@"hi,小明" stringByReplacingCharactersInRange:range withString:@"小红"];
NSLog(@"%@",replaceString);
}
//方法二:
//全部替换,即将字符串内的所有的小明都替换成小红
NSString *replaceString1 = [contentString stringByReplacingOccurrencesOfString:@"小明" withString:@"小红"];
字符串的转换:
//字符串类型转换成int类型
NSInteger number = [@"123" intValue];
number = number + 1;
//其他数据类型转换字符串
NSString *other = [NSString stringWithFormat:@"%ld",number];
//把小写的字符串转换成大写
NSString *uppercaseString = [@"abc" uppercaseString];
//把上一句大写的字符串转换成小写
NSString *lowercaseString = [uppercaseString lowercaseString];
//将首字母大写(按单词分,每一个单词的首字母大写,其他字母都小写。)
NSString *capitalizedString = [@"i love you" capitalizedString];
字符串的替换.png
字符串前缀和后缀的判断:
//字符串前缀的判断用hasPrefix
if ([@"abcdef" hasPrefix:@"abc"]) {
NSLog(@"abc为该字符串前缀");
}else {
NSLog(@"abc不是该字符串前缀");
}
//字符串后缀的判断用hasSuffix
if ([@"abcdef" hasSuffix:@"def"]) {
NSLog(@"abc为该字符串后缀");
}else {
NSLog(@"abc不是该字符串后缀");
}
字符串前缀和后缀的判断.png
可变字符串
//在堆区开辟空间创建可变字符串。
NSMutableString *string1 = [[NSMutableString alloc]initWithString:@"abcdefg"];
//也可以使用便利构造器创建
NSMutableString *string2 = [NSMutableString stringWithFormat:@"abcdefg"];
//在原字符串上直接追加字符串
[string1 appendString:@"asdf"];
//在原字符串上直接追加格式化字符串
[string2 appendFormat:@"%d",123];
//插入字符串
//将一个字符串插入到一个索引位置处
[string1 insertString:@"www." atIndex:0];
//删除指定位置的字符:1是索引,2是长度
[string1 deleteCharactersInRange:NSMakeRange(1, 2)];
可变字符串的操作.png
网友评论