在IOS的开发过程中,NSString绝对是一个经常使用的类, 最近一直在对字符串进行各种操作, 索性停下来总结一下这个基础类,各位看官请轻喷,有问题大家一起互动。
OBjective-C 中处理字符串的类有两个:NSString 和 NSMutableString。
NSString 为不可变字符串,内容和长度不能进行动态更改,NSMutableString 为可变字符串,创建之后可以动态的改变该字符串的内容和长度。
1,字符串的创建
NSString *str =@"字面量创建字符串";
NSString *str1 = [NSStringnew];
NSString *str2 = [[NSStringalloc] initWithString:@"等同于1"];
NSString *str3 = [NSStringstringWithFormat:@"%@",@"字符串"];
2, 字符串的追加
在字符串的末尾追加:
NSString *temp =@"临时字符串";
NSString *str = [tempstringByAppendingString:temp];
在指定的范围追加:
NSString *str1 =@"奋斗中,奋斗中";
NSRange rang = {4,0}; // 4代表从哪个索引开始插入, 0代表覆盖几个字符
NSString *str2 = [str1stringByReplacingCharactersInRange:rang withString:@"我在"];
格式化字符串:
int num =666;
float height = 8.8;
char* charstr = "rose";
NSString *str3 = [NSStringstringWithFormat:@"他买了%d朵 %s,每朵都有%.f厘米高",num,charstr,height];
3, 字符串的截取
NSString *str =@"你是我的小呀小苹果";
// 字符串长度
NSUInteger length = [strlength];
// 根据索引获得单个字符
unichar cstr = [strcharacterAtIndex:3];
// 从指定的索引位置开始截取字符串到末尾
NSString *str1 = [strsubstringFromIndex:3];
// 从字符串首位开始截取到指定索引位置
NSString *str2 = [strsubstringToIndex:4];
// 截取字符串从某个位置开始到某个位置结束
NSRange rang = {2,3};
NSString *str3 = [strsubstringWithRange:rang];
// 获得一个字符串在字符串中的索引位置,长度
NSRange charrang = [strrangeOfString:str3];
4, 字符串的判断
NSString *str =@"字符串比较";
NSString *str1 = @"字符串";
NSString *str2 = @"字符串";
// 判断是否为空
if (str == nil || str1.length ==0)
{
NSLog(@"字符串为空");
}
else
{
NSLog(@"字符串不为空");
}
//判断是否相等比较
// 判断内存地址是否相同
if (str1 == str2)
{
NSLog(@"str1: %p, str2: %p",str1,str2);
}
// 判断两个字符串是否相等
if ([str1 isEqualToString:str2])
{
NSLog(@"先判断字符串的地址是否相同,相同了,再判断字符串是否相同");
}
// ASICC 值比较
NSComparisonResult result = [str1 compare:str2];
switch (result)
{
caseNSOrderedAscending:
NSLog(@"str1 小于 str2");
break;
caseNSOrderedSame:
NSLog(@"str1 等于 str2");
break;
caseNSOrderedDescending:
NSLog(@"str1 大于 str2");
break;
default:
break;
}
// 字符串以开头结尾比较
if ([str1 hasPrefix:@"字符"])
{
NSLog(@"字符串str1是以'字符'开头的");
}
if ([str hasSuffix:@"比较"])
{
NSLog(@"字符串str是以'比较'结尾的");
}
NSString *str3 =@"This is a String";
NSString *str4 =@"this is a string";
// 不区分大小写比较
NSComparisonResult unResult = [str3 caseInsensitiveCompare:str4];
switch (unResult)
{
case 0:
NSLog(@"str3 = str4");
break;
case -1:
NSLog(@"str3 < str4");
break;
case 1:
NSLog(@"str3 > str4");
break;
default:
break;
}
// NSCaseInsensitiveSearch :进行完全比较,区分大小写
// NSNumericSearch:比较字符串的字符个数,而不是字符值
[str3 compare:str4options:NSCaseInsensitiveSearch |NSNumericSearch];
5, 字符串的转换
//字符串转化成基本数据类型
NSString *intStr = @"123456";
int num = [intStr intValue];
NSString *floatStr = @"88.88";
float fnum = [floatStr floatValue];
double dnum = [floatStr doubleValue];
// 基本类型转化为字符串
int a = 10;
NSString *iStr = [NSStringstringWithFormat:@"%d",a];
float f = 10.8;
NSString *fStr = [NSStringstringWithFormat:@"%.f",f];
double d = 10.8888;
NSString *dStr = [NSStringstringWithFormat:@"%.4f",d];
char* cc = "cccc";
NSString *cStr = [NSStringstringWithFormat:@"%s",cc];
//字符串转化成大小写
NSString *str = @"abCDefg";
NSString *str1 = [struppercaseString]; // 全部转化为大写
NSString *str2 = [str lowercaseString]; // 全部转化为小写
NSString *str3 = [str capitalizedString]; // 首字母转化为大写,其余为小写
字符串转日期在以后介绍,这次先不介绍.
6, 字符串的替换
//替换特定字符
NSString *str =@"www.baidu.com";
NSString *str1 = [strstringByReplacingOccurrencesOfString:@"om"withString:@"n"];
// 删除特定字符
NSString *str2 =@"www---.baidu.--com";
NSString *str3 = [str2stringByReplacingOccurrencesOfString:@"-"withString:@""];
// 去掉字符串中的空格
NSString *str4 =@"www .baidu .com";
NSString *str5 = [str4stringByReplacingOccurrencesOfString:@" "withString:@""];
// 设置替换的区域
NSString *str6 = [strstringByReplacingOccurrencesOfString:@"w"withString:@"a"options:NSCaseInsensitiveSearchrange:NSMakeRange(1,1)];
7, 字符串转换
// 字符串转数组
+ (NSArray *)arrayFromString:(NSString *)string withMark:(NSString *)markString
{
if ([string isEqualToString:@""] || [markStringisEqualToString:@""])
{
return nil;
}
NSArray *result = [string componentsSeparatedByString:markString];
return result;
}
// 数组转字符串
+ (NSString *)stringFromArray:(NSArray *)array withMark:(NSString *)markString
{
if ((!array || 0 == array.count) || [markStringisEqualToString:@""])
{
return nil;
}
NSString *result = [array componentsJoinedByString:markString];
return result;
}
8, 可变字符串
//创建的两种方式,任选其一
NSMutableString *mutStr = [[NSMutableStringalloc] init];
NSMutableString *mutStr = [[NSMutableString alloc] initWithCapacity:0];
// 初始化字符串
[mutStrsetString:@"核桃"];
// 动态的在字符串末尾追加
[mutStrappendString:@"圣女果"];
// 在指定的索引位置插入字符串
[mutStr insertString:@"好吃!"atIndex:3];
// 删去指定范围的字符串
NSRange rang = {2,3};
[mutStr deleteCharactersInRange:rang];
// 替换指定范围的字符串
[mutStr replaceCharactersInRange:rangwithString:@"abcd"];
这次的总结就先写到这里, 还有字符串的遍历,改变字符串中某个字符的颜色等, 会在下一次总结中一一道来.