Foundation框架之字符串

Foundation框架 簡介

Foundation框架是Cocoa編程、iOS編程的基礎框架侮措,它包括字符串德崭、集合、日期弟胀、時間等基礎.

目錄如下:
  1. NSString和NSMutableString
  • 代表日期楷力、時間的NSDate]
  • NSCopying和NSMutableCopying
  • NSArray和NSMutableArray
  • NSSet和NSMutableSet和NSCountedSet
  • NSOrderedSet和NSMutableOrderedSet
  • NSDictionary和NSMutableDictionary

1. 創(chuàng)建字符串

NSString大致功能
  1. 創(chuàng)建字符串:創(chuàng)建字符串既可使用init開頭的實例方法喊式,也可以使用string開頭的類方法,當然也可以直接用@“”的形式給出字符串直接量萧朝;
  2. 讀取文件或網(wǎng)絡URL來初始化字符串岔留;
  3. 將字符串內(nèi)容寫入文件或URL;
  4. 獲取字符串長度检柬,即可獲取字符串包括的字符個數(shù)献联,也可以獲取字符串包括的字節(jié)個數(shù);
  5. 獲取字符串中的字符或字節(jié)何址,既可獲取指定位置的字符里逆,也可以獲取指定范圍的字符;
  6. 獲取字符串對應的C風格字符串用爪;
  7. 連接字符串原押;
  8. 分隔字符串;
  9. 查找字符串內(nèi)對象的字符和子串偎血;
  10. 替換字符串诸衔;
  11. 比較字符串;
  12. 字符串大小比較颇玷;
  13. 對字符串中的字符進行大小寫替換
//typedef unsigned short定義
unichar data[6] = {97,98,99,100,101,102};

//使用unicode數(shù)值數(shù)組初始化字符串
NSString* str1 = [[NSString alloc]initWithCharacters:data length:6];
NSLog(@"%@",str1);
char* cstr = "Hello iOS!";

//將C風格的字符串轉換成NSString對象
NSString* str2 = [NSString stringWithUTF8String:cstr];
NSLog(@"%@",str2);

//將字符串寫入自定文件
[str2 writeToFile:@"myFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

//讀取文件內(nèi)容笨农,用文件內(nèi)容初始化字符串
NSString* str3 = [NSString stringWithContentsOfFile:@"myFile.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",str3);

2. NSString的常用功能

NSString* str = @"Hello”;
NSString* str1 = @"hello";
NSString* book = @"《瘋狂iOS講義》”;
1. 在str后面追加固定的字符串
//原來的字符串對象并不改變,只是將新生成的字符串重新賦給str指針變量
str = [str stringByAppendingString:@",iOS!"];
NSLog(@"%@",str);//Hello,iOS!
2. 獲取字符串中的字符
unichar OCChar = [str characterAtIndex:1];
NSLog(@"%C",OCChar);//e
3. 獲取字符串對象的C風格字符串
const char* cstr = [str UTF8String];
NSLog(@"獲取的C字符串%s",cstr);//獲取的C字符串Hello,iOS!
4. 比較兩個字符串是否相等 相等返回1(yes),不相等返回0(no)
BOOL ret = [str isEqualToString:str1];
NSLog(@"%d",ret);//0
5.比較字符串
//大小帖渠,compare:方法返回NSComparisonResult枚舉值
//該枚舉類型包含NSOrderedAscending谒亦、NSOrderedSame、NSOrderedDescending三個值
//分別代表調(diào)用compare:的字符串位于被比較字符串小空郊、相等份招、大
switch ([str compare:str1]) {
    case NSOrderedAscending:
        NSLog(@"str小于str1");//str小于str1
        break;
    case NSOrderedSame:
        NSLog(@"str與str1相等");
        break;
    case NSOrderedDescending:
        NSLog(@"str大于str1");
        break;
    default:
        break;
}
//不區(qū)分大小的比較
NSComparisonResult result = [str caseInsensitiveCompare:str1];
NSLog(@"%ld",result);
6. 在str后面追加帶變量的字符串
str = [str stringByAppendingFormat:@"%@是一本非常不錯的圖書.",book];
NSLog(@"%@",str);//Hello,iOS!《瘋狂iOS講義》是一本非常不錯的圖書.
7. 獲取字符串的字符個數(shù)
NSLog(@"str的字符個數(shù):%lu",[str length]);//str的字符個數(shù):30
8. 獲取str按UTF-8字符集解碼后字節(jié)數(shù)
//
NSLog(@"str按UTF-8字符集解碼后字節(jié)數(shù):%lu",[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);//str按UTF-8字符集解碼后字節(jié)數(shù):62
9. 獲取str前10個字符組成的字符串
NSString* s1 = [str substringToIndex:10];
NSLog(@"%@",s1);//Hello,iOS!
10. 獲取str從第6個字符開始,與后面的字符組成的字符串
NSString* s2 = [str substringFromIndex:6];
NSLog(@"%@",s2);//iOS!《瘋狂iOS講義》是一本非常不錯的圖書.
11. 獲取str從第6個字符開始渣淳,到第15個字符組成的字符串
NSString* s3 = [str substringWithRange:NSMakeRange(6, 15)];
NSLog(@"%@",s3);//iOS!《瘋狂iOS講義》是一
12. 獲取iOS在str中出現(xiàn)的位置
//獲取iOS在str中出現(xiàn)的位置 從前向后遍歷
NSRange pos = [str rangeOfString:@"iOS"];
NSLog(@"iOS在str出現(xiàn)的開始位置:%ld脾还,長度為:%ld",pos.location,pos.length);//iOS在str出現(xiàn)的開始位置:6伴箩,長度為:3
//獲取iOS在str中出現(xiàn)的位置 從后向前遍歷
NSRange pos1 = [str rangeOfString:@"iOS" options:NSBackwardsSearch];
NSLog(@"iOS在str出現(xiàn)的結束位置:%ld入愧,長度為:%ld",pos1.location,pos1.length);//iOS在str出現(xiàn)的開始位置:6,長度為:3
13. 將str的所有字符轉為大寫
str = [str uppercaseString];
NSLog(@"%@",str);//HELLO,IOS!《瘋狂IOS講義》是一本非常不錯的圖書.
14. 將str的所有字符轉為小寫

str = [str lowercaseString];
NSLog(@"%@",str);//hello,ios!《瘋狂ios講義》是一本非常不錯的圖書.
15. 前綴后綴
//前綴
BOOL ret1 = [str hasPrefix:@"He"];
NSLog(@"%d",ret1);
//后綴
BOOL ret2 = [str hasSuffix:@"."];
NSLog(@"%d",ret2);

3. 可變字符串(NSMutableString)

NSString類是不可變的類嗤谚,即一旦NSString對象被創(chuàng)建棺蛛,包含在這個對象中的字符串序列是不可改變的,直至這個對象被銷毀很钓。
NSSMutableString對象則代表一個字符序列可變的字符串九默,而且NSMutableString是NSString的子類绷跑,NSString包含的方法,NSMutableString都可直接使用。
通過方法改變NSMutableString的字符序列:

NSString* book = @"《瘋狂iOS講義》”;
1. 創(chuàng)建一個NSMutableString對象
NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
2. 追加固定字符串
//字符串所包含的字符序列本身發(fā)生改變终畅,因此無須重新賦值
[str appendString:@",iOS!"];
NSLog(@"%@",str);//Hello,iOS!
3. 追加帶變量的字符串
//字符串包含的字符序列本身發(fā)生了改變籍胯,因此無需重新賦值
[str appendFormat:@"%@這是一本非常不錯的圖書。",book];
NSLog(@"%@",str);//Hello,iOS!《瘋狂iOS講義》這是一本非常不錯的圖書离福。
4. 在指定位置插入字符串
//字符串包含的字符序列本身發(fā)生了改變杖狼,因此無需重新賦值
[str insertString:@"fkit.org" atIndex:6];
NSLog(@"%@",str);//Hello,fkit.orgiOS!《瘋狂iOS講義》這是一本非常不錯的圖書。
5. 刪除從位置6到位置18的所有字符
[str deleteCharactersInRange:NSMakeRange(6, 12)];
NSLog(@"%@",str);//Hello,《瘋狂iOS講義》這是一本非常不錯的圖書妖爷。
6. 將從位置6到位置15的字符串替換成Objective-C
[str replaceCharactersInRange:NSMakeRange(6, 9) withString:@"Objective-C"];
NSLog(@"%@",str);//Hello,Objective-C這是一本非常不錯的圖書蝶涩。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市絮识,隨后出現(xiàn)的幾起案子绿聘,更是在濱河造成了極大的恐慌,老刑警劉巖次舌,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄攘,死亡現(xiàn)場離奇詭異,居然都是意外死亡彼念,警方通過查閱死者的電腦和手機鲜屏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來国拇,“玉大人洛史,你說我怎么就攤上這事〗戳撸” “怎么了也殖?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長务热。 經(jīng)常有香客問我忆嗜,道長,這世上最難降的妖魔是什么崎岂? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任捆毫,我火速辦了婚禮,結果婚禮上冲甘,老公的妹妹穿的比我還像新娘绩卤。我一直安慰自己,他們只是感情好江醇,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布濒憋。 她就那樣靜靜地躺著,像睡著了一般陶夜。 火紅的嫁衣襯著肌膚如雪凛驮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天条辟,我揣著相機與錄音黔夭,去河邊找鬼宏胯。 笑死,一個胖子當著我的面吹牛本姥,可吹牛的內(nèi)容都是我干的胳嘲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扣草,長吁一口氣:“原來是場噩夢啊……” “哼了牛!你這毒婦竟也來了?” 一聲冷哼從身側響起辰妙,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤鹰祸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后密浑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛙婴,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年尔破,在試婚紗的時候發(fā)現(xiàn)自己被綠了街图。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡懒构,死狀恐怖餐济,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胆剧,我是刑警寧澤絮姆,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站秩霍,受9級特大地震影響篙悯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铃绒,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一鸽照、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颠悬,春花似錦矮燎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糠悼。三九已至届榄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間倔喂,已是汗流浹背铝条。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工靖苇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人班缰。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓贤壁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親埠忘。 傳聞我的和親對象是個殘疾皇子脾拆,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容