首先聲明一下:
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 <Foundation/Foundation.h>
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 <Foundation/Foundation.h>
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;
}