无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的。简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解每个方法如何使用,以下闲来无事做了一个简单的总结,便于以后使用。
1.字符串的创建
//字符串创建工厂
NSString *str1 = [NSString stringWithFormat:@"%d, %d",1,2];
NSString *str2 = [NSString stringWithString:@"hello"];
NSString *str3 = [NSString stringWithCString:"aaa" encoding:NSUTF8StringEncoding];
//普通方法
NSString *str4 = @"hello";
2.获取字符串的长度 -(unsigned int) length
NSString *str = @"Hello";
NSUInteger leng= [ str length];
3.字符串的比较 == 比较字符串的指针 isEqualToString 比较字符串的内容返回值是BOOL类型
以下来利用字符串的浅拷贝和深拷贝来测试上面的两个方法
retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。
copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, 引用计数每次加一。始终返回一个不可变对象。
mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。
NSString *string1 = @"hello";
NSString *string2 = [string1 mutableCopy];
NSString *string3 = [string1 copy];
//NSLog(string2);
//NSLog(string3);
//比较指针
if (string1 == string2)
{
NSLog(@"指针相同");
}
else
{
NSLog(@"string1通过深拷贝给string2所以指针不同");
}
//比较指针
if (string1 == string3)
{
NSLog(@"string1通过浅拷贝给string3所以指针相同");
}
else
{
NSLog(@"string1通过深拷贝给string3所以指针不同");
}
//比较内容
if ([string1 isEqualToString:string2] == YES)
{
NSLog(@"string1 和 String2的内容相同");
}
else
{
NSLog(@"string1 和 String2的内容不同");
}
4.字符串的比较函数compare,
NSString下面的compare函数的返回值是一个枚举类型NSComparisonResult; NSOrderedAscending=-1, NSOrderedSame=0,NSOrderedDescending = 1 ; 对compare进行重载,可以传入option参数, 1 代表不区分大小写,2代表区分大小写,64代表比较字符串的个数而不是字符串的值。
//字符串比较函数compare
NSString *strCompare1 = @"abcde";
NSString *strCompare2 = @"bcdef";
//compare的返回类型是NSComparisonResult
NSComparisonResult result = [strCompare1 compare:strCompare2];
switch (result) {
case NSOrderedAscending:
NSLog(@"升序(str1 < str2)");
break;
case NSOrderedSame:
NSLog(@"两个字符串相等");
break;
case NSOrderedDescending:
NSLog(@"降序(str1 > str2)");
break;
default:
NSLog(@"别的情况!");
break;
}
5.字符串的拼接函数 stringByAppendingString : (NSString *) aString; 和 stringByAppendingFormat : (NSString *) format …;
NSString *append1 = @"I love ";
NSString *append2 = @"china";
//用stringByAppendingString来进行字符串的拼接
append1 = [append1 stringByAppendingString:append2];
NSLog(append1);
//用stringByAppendingFormat来进行字符串的拼接
append1 = [append1 stringByAppendingFormat:@" iPhone%dS",6];
NSLog(append1);
6.字符串的查找
-(BOOL) hasPrefix : (NSString *) string: 判断一个字符串是否是以string开头;
-(BOOL) hasSuffix : (NSString *) string: 判断一个字符串是否是以string结尾;
-(NSRange) rangeOfString:(NSString *) string; 模式匹配字符串,返回类型是结构体NSRange, 结构体 NSRange里有两个值都是整型的,location代表子字符串在原有字符串中的位置,length代表长度。
//字符串的查找
NSString *parent = @"123456789";
NSString *pre = @"123";
NSString *suf = @"789";
NSString *mid =@"456";
//匹配开头
if ([parent hasPrefix:pre] == YES) {
NSLog(@"匹配成功");
}
//匹配结尾
if ([parent hasSuffix:suf] == YES) {
NSLog(@"匹配成功");
}
//从中间匹配
NSRange range = [parent rangeOfString:mid];
NSLog(@"location = %d, length = %d", range.location, range.length);
7.字符串的截取
-(NSString *) substringFromIndex : (NSUInteger) from 获取从字符串的开头到字符串结尾的字符串内容,不包含from位置的字符。
-(NSString *)substringToIndex : (NSUInterger) to 获取从字符串开头到字符串的to位置的字符串内容,包含to位置的字符;
-(NSString *) substringWithRange:(NSRange) range 根据NSRange这个范围来获取字符串;
//字符串的截取
NSString *parent = @"123456789";
//从一个位置截取字符串到结尾:可以从零开始
NSString *toEnd = [parent substringFromIndex:6];
NSLog(toEnd);
//从一个开头然后到传入的值
NSString *fromBegin = [parent substringToIndex:3];
NSLog(fromBegin);
//从一个位置截取指定长度
NSRange range = {3,3};
NSString *rangString = [parent substringWithRange:range];
NSLog(rangString);
8.字符串中的类型转换函数
-(double) doubleValue; 把字符串的内容转换为double类型
-(float) floatValue; 把相应的字符串转换为float类型
-(int) intValue;把相应的字符串转换为int类型
//字符串的类型转换
NSString *test = @"1234.123456789";
//转换为整数
int strToInt = [test intValue];
NSLog(@"strToInt = %d", strToInt);
//转换为float
float strToFloat = [test floatValue];
NSLog(@"strToFloat = %.9f", strToFloat);
//转换为double
double strToDouble = [test doubleValue];
NSLog(@"strToDouble = %.9f", strToDouble);
9.字符串替换函数
-(NSString *)stringByReplacingOccurrencesOfString: (NSString *) target withString : (NSString *) replacement; 把字符串target转换为replacement
-(NSString *)stringByReplacingCharactersInRange : (NSRange) range withString : (NSString *) replacement; 把指定范围内的字符串进行替换;
-(NSArray *) componentsSeparatedByString:(NSString *) separator:以字符串中的某个字符进行分割,返回数组对象
//字符串替换函数
NSString *string = @"abc,def,g";
//将字符串中特定的字符串换成指定的字符串
NSString *after = [string stringByReplacingOccurrencesOfString:@"a" withString:@"zzzzzz"];
NSLog(after);
//将range范围内的字符串替换为相应的字符串
NSRange range = {0,6}; //从1开始到第6个
NSString *rangeString = [after stringByReplacingCharactersInRange:range withString:@"a"];
NSLog(rangeString);
//分割字符串,把分割完的字符串存入数组中
NSArray *split = [string componentsSeparatedByString:@","];
for (int i = 0; i < [split count]; i++) {
NSLog(@"%@", [split objectAtIndex:i]);
}