1.比较字符串
比较两个字符串是否相等,应该用isEqualToString,而不能仅仅只是比较字符串的指针值,例如:
if([thing1 isEqualToString: thing2])
{
.......
}
和
if(thing1 == thing2)
{
........
}
是不同的。
==运算符只判断thing1 和thing2 的指针数值,而不是他们所指的对象,由于thing1 和 thing2 是不同的字符串,所以第二种比较方式会认为它们是不同的。
有时,我们想检查两个对象的标志:thing1 和 thing2 是同一个对象吗?这时就应该使用运算符==。如果是想查看等价性(即两个字符串是否代表同一个事物吗),那么请使用isEqualToString.
2.区分大小写的比较
- (NSCompar isonResult) compare:(NSString *)string
options:(unsigned) mask
options 参数是一个位掩码,可以用位或运算符(|)来添加选项标记,常用选项如下:
NSCaseInsensitiveSearch:不区分大小写字符
NSLiteralSearch:进行完全比较,区分大小写
NSNumericSearch:比较字符串的字符个数,而不是字符值。如果没有这个选项,100会排在99前面
3.字符串是否包含别的字符串
-(BOOL)hasPrefix:(NSString *)aString;
检查字符串是否以另一个字符串开头
- (BOOL) hasSuffix:(NSString *)aString;
检查字符串是否以另一个字符串结尾
- (NSRange) rangeOfString: (NSString *) aString;
字符串内的某处是否包含其他字符串。返回一个NSRange struct来告诉你与这个字符串相匹配的部分在哪里以及能匹配上的字符个数.
4.设定子串
NSString是不可变的,但这并不意味着不能操作它。cocoa提供了一个NSString的子类:NSMutableString
可以使用类方法stringWithCpacity:来创建一个新的NSMutableString
+ (id) stringWithCapacity:(unsigned) capacity
例:
NSMutableString *string;
string = [NSMutableString stringWithCapacity:42];
有了可变的字符串,就可以执行各种操作:
- (void)appendString: (NSString *) aString;
接受参数aString,然后将其复制到接收对象的末尾
- (void) appendFormat: (NSString *) format,……;
将格式化的字符串附加在字符串的末尾,而不是创建新的字符串对象
例:
NSMutableString *string;
string = [NSMutableString stringWithCapacity:50];
[string appendString:@"hello,"];
[string appendFormat:@"%d", 40];
这段代码的结果为:hello,40
当然也可以删除字符串中的字符:
- (void) deleteCharactersInRange:(NSRange) range;
例:
NSMutableString *friends;
friends = [NSMutableString stringWithCapacity:50];
[friends appendString:@"james tom fish"];
NSRange tomrange;
tomrange = [friends rangeOfString:@"tom"];
tomrange.length++; //把空格也去掉
[friends deleteCharactersInRange:tomrange];
这样,这个字符串就变成了“james fish”