objective-c 基础教程 这本书可以说是iphone ios开发入门的经典基础教程。半年前看过,现在学习iphone开发有一段时间了,如今重读这本书,感觉还是有很多收获,写笔记有两个目的,一是方便自己写程序的时候查看,第二是帮助初学者查看,鉴于此,笔记中会加入我自己的一些内容,以方便初学者。对于已有编程经验的人来说,这本书前面7章都可以当小说一样看过。
写程序其中估计有50%都是在处理字符串。字符串处理对掌握一门语言或者一个平台都是非常重要的。以前在symbian上开发程序,因为经常会在symbian字符串和标准C字符串中转换。而又没有现成的可用代码。只能自己封装,这画了不少精力和时间。在iphone开发中用不着这么痛苦,系统为我们提供了强大的字符串处理函数。
最常用的莫过于直接把一个常量字符串付给一个变量,比如 :NSString * tmp = @"Hello, World!!" ;
其次是使用类方法 +(id) stringWithFormat:(NSString *) format,⋯;
比如:
int h = 178;
NSString * height = [NSString stringWithFormat:@"Your height is %d cm",h ];
- (unsigned int)length;
sdk中帮助文档并不是这样定义的,而是:- (NSUInteger)length。
而NSUInteger的定义是:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef unsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
A: - (BOOL)isEqualToString:(NSString *)aString
两个字符串相同返回YES,不同返回NO。
B:- (NSComparisonResult)compare:(NSString *)aString
其中NSComparisonResult定义如下:
typedef enum _NSComparisonResult {
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
}NSComparisonResult;
这个比价反映了两个字符串的大小关系,比如 [@"aardvark" compare:@"zygote"]将返回NSOrderedAscending。C:不区分大小写的比较:compare:options:
options是一个位掩码,常用选项如下:
NSCaseInsensitiveSearch, 不区分大小写。
NSLiteralSearch, 进行完全比较,区分大小写。
NSNumericSearch.比较字符串的字符个数,而不是字符值。
不区分大小写比较也可以用函数 - (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString。
D:字符串中是否有别的字符串,字符串查找
- (BOOL)hasPrefix:(NSString *)aString 是否以一个字符串开头
- (BOOL)hasSuffix:(NSString *)aString 是否以一个字符串结尾。
- (NSRange)rangeOfString:(NSString *)aString 查找一个字符串的起始位置。如果没找到返回{NSNotFound,0}
- (NSString *)substringFromIndex:(NSUInteger)anIndex:从指定位置开始到字符串结束
- (NSString *)substringToIndex:(NSUInteger)anIndex 从字符串开始第一个到指定位置。
- (NSString *)substringWithRange:(NSRange)aRange 取一个字符串中间的一部分。
例子:
int main(int argc, char *argv[])
{
int h = 178;
NSString * height = [NSString stringWithFormat:@"YourHeightIs %d cm",h ];
NSRange rang = [height rangeOfString:@"Height"];
if(rang.location !=NSNotFound)
{
NSLog(@"%@",[height substringWithRange:rang]);
NSLog(@"%@",[height substringFromIndex:rang.location+rang.length]);
}
return (0);
}
这个例子演示了字符串的基本用法包括查找和取子字符串。结果:
Height
Is 178 cm
- (NSString *)stringByAppendingString:(NSString *)aString
- (NSString *)stringByAppendingFormat:(NSString *)format ...
NSString是不可变的,意味着一旦创建好,就不能再改变,不能对它删除或者重置。
Cocoa 提供了NSString的子类NSMutableString,可以实现可变字符串。NSMutableString常见方法。
+ (id)stringWithCapacity:(NSUInteger)capacity 创建一个字符串并指定最大长度。
- (void)appendString:(NSString *)aString 追加字符
- (void)appendFormat:(NSString *)format ... 按格式追加字符
- (void)deleteCharactersInRange:(NSRange)aRange 删除指定位置的字符。
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex 在指定位置插入字符
- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString 替换指定位置的字符
- (void)setString:(NSString *)aString 重置字符串。