首先声明一下:
OC 中的函数,是全局的,如 NSLog();,它不属于任何类,不属于任何一个对象。
OC 中的方法,非全局的,init 方法,用中括号来使用,它属于类本身,或者属于对象本身;分为类方法,和实例方法(对象方法);方法被封装对象,或类模板当中
1. 不可变字符串NSString
1.1 OC字符串和C字符串的不同
OC字符串是对象,占用堆空间;C 字符串是数据,它占用栈空间
1.2 OC字符串的常见操作
(1) 常用创建方法
//实例方法创建字符串
- (instancetype)initWithString:(NSString *)aString;
- (instancetype)initWithFormat:(NSString *)format, …;
- (instancetype)initWithUTF8String:(const char *)bytes;
//用类方法创建字符串
+ (instancetype)stringWithString:(NSString *)aString;
+ (instancetype)stringWithFormat:(NSString *)format,, …;
+ (instancetype)stringWithUTF8String:(const char *)bytes;
(2)求字符串长度
- (NSUInteger)length;
(3) 通过索引获取相应的字符
- (unichar)characterAtIndex:(NSUInteger)index;
(4) 字符串比较
//判断两个字符串是否相等
- (BOOL)isEqualToString:(NSString *)aString;
//比较两个字符串大小
- (NSComparisonResult)compare:(NSString *)aString;
//不区分大小写比较大小
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString;
(5) 字符串查找//在给定的字符串中去查找子字符串
- (NSRange)rangeOfString:(NSString *)aString;
(6) 判断前后缀
//前缀字符串
- (BOOL)hasPrefix:(NSString *)aString;
//后缀字符串
- (BOOL)hasSuffix:(NSString *)aString;
(7) 数字字符串转化为各种数字类型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
//long unsigned int
- (NSInteger)integerValue;
- (long long)longLongValue;
- (BOOL)boolValue;
(8) 大小写转换
- (NSString *)uppercaseString;//将所有字符转换成大写
- (NSString *)lowercaseString;//将所有字符转换成小写
- (NSString *)capitalizedString;将第一个字符转换成大写
*(9)字符串提取
- (NSString *)substringFromIndex:(NSUInteger)from;
- (NSString *)substringToIndex:(NSUInteger)to;
- (NSString *)substringWithRange:(NSRange)range;
*(10) 从本地读取文件内容
- (id)initWithContentsOfFile:(NSString *)path
encoding:(NSStringEncoding)enc
error:(NSError **)error;
+ (id)stringWithContentsOfFile:(NSString *)path
encoding:(NSStringEncoding)enc
error:(NSError **)error;
eg.NSString基本使用
#import
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString* a = [[NSString alloc]initWithString:@"你好吗,hello"];
NSString* aa = [NSString stringWithFormat:@"%d %@",20,@"world"];
NSMutableString* b = [[NSMutableString alloc]initWithString:@"HELLO"];
unichar myChar = [a characterAtIndex:2];
NSLog(@"The Length:%lu",[a length]);
NSLog(@"The Length:%lu",[aa length]);
NSLog(@"The Length:%lu",[b length]);
NSLog(@"The character: %C",myChar);
NSString* aaa = a;
//判断是否相同
if([a isEqualToString:aaa] == YES){
printf("a isEqualToString aaa\n");
}else{
printf("a is different from aaa\n");
}
//比较字符串大小
if([a caseInsensitiveCompare:aa] == NSOrderedSame){
printf("a equals aaa\n");
}else if ([a caseInsensitiveCompare:aa] == NSOrderedAscending){
printf("a less than aaa\n");
}else{//NSOrderedDescending
printf("a great than aaa\n");
}
}
return 0;
}
2 可变字符串NSMutableString
2.1 什么是可变字符串
可变字符串对象的内容可以改变
2.2 NSMutableString 和NSString 的关系
NSMutableString 继承于 NSString,
NSString类的所有方法NSMutableString都可以使用
2.3 可变字符串常见操作
(1) 指定索引插入子串
- (void)insertString:(NSString *)aString
atIndex:(NSUInteger)loc;
(2) 删除指定范围的子串
- (void)deleteCharactersInRange:(NSRange)range;
(3) 追加子串
- (void)appendString:(NSString *)aString;
(4) 追加格式化子串
- (void)appendFormat:(NSString *)format, ...;
(5) 修改子串
- (void)setString:(NSString *)aString;
eg.NSMutableString基本使用
#import
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString* a = [[NSString alloc]initWithString:@"HELLO"];
NSString* sub = [[NSString alloc]initWithString:@"EL"];
NSRange myRange = [a rangeOfString:sub];
printf("myRange.location:%lu\n",myRange.location);
printf("myRange.length:%lu\n",myRange.length);
//前缀存在判断
//NSString* b = [NSString stringWithString:a];
if ([a hasPrefix:@"HEL"]) {
printf("has Prefix.\n");
}else{
printf("has not Prefix.\n");
}
//数字字符串转换成相应的数字类型
NSString* c = [NSString stringWithUTF8String:"654321"];
NSLog(@"Number:%d",[c intValue]+100);
//- (BOOL)boolValue;使用
NSString* d = [NSString stringWithFormat:@"no"];
NSLog(@"%s",[d boolValue]?"yes":"no");
//- (NSString *)uppercaseString;
//将所有字符转换成大写
NSLog(@"%@",[d uppercaseString]);
//- (NSString *)lowercaseString;
//将所有字符转换成小写
NSLog(@"%@",[d lowercaseString]);
//- (NSString *)capitalizedString;
//将第一个字符转换成大写
NSLog(@"%@",[d capitalizedString]);
//-----------------------------
NSString* longString = [NSString stringWithFormat:@"ABCDEFG1234567890"];
// - (NSString *)substringFromIndex:(NSUInteger)from;
NSLog(@"%@",[longString substringFromIndex:6]);
//- (NSString *)substringToIndex:(NSUInteger)to;
//substringToIndex不包含index位置的字符本身
NSLog(@"%@",[longString substringToIndex:6]);
//- (NSString *)substringWithRange:(NSRange)range;
NSRange myRange2 = {5,6};
myRange2.location = 4;
myRange2.length = 7;
NSLog(@"%@",[longString substringWithRange:myRange2]);
}
return 0;
}