------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
一Foundation框架
1概念:框架是由許多類、方法、函數、文檔按照一定的邏輯組織起來的集合
大約有80個框架
2 Foundation框架的作用Foundation框架是基礎
Foundation框架包含了很多開發中常用的數據類型:
結構體
枚舉
類
3使用Foundation框架
使用Foundation框架中的功能引入
#import <Foundation/Foundation.h>
4修改了系統的文件,引起的錯誤
解決方案:刪除Xcode的緩存,
緩存路徑是 /Users/用戶名/Library/Developer/Xcode/DerivedData
要看到上述文件夾, 在終端敲指令顯示隱藏文件夾
1、NSString類
一個NSString對象就代表一個字符串
叫NSString爲字符串類
2、NSString的創建方式
1) 最直接的方式(這是常量字符串)
NSString *str = @"abc";
NSString *st3 = @"abc";
3 格式化的方式(堆區)
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];
NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
NSString *str1 = @"你好123";
NSString *str2 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str3 = [NSString stringWithFormat:@"你好%d", 123];
// 比較下面的3個字符串與上面的3個字符串的地址
NSString *str11 = @"你好123";
NSString *str21 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str31 = [NSString stringWithFormat:@"你好%d", 123];
結果爲不同下面的方式是直接把字符串的地址進行賦值, 所以地址一定都是一樣的。
NSString *s1 = str1;
NSLog(@"%@----%@", s1, str1);
NSLog(@"%p---%p", s1, str1);
方式: 直接根據給定的路徑來讀寫文件
文件寫入: [str1 writeToFile:@"路徑" atomically:YES
encoding:NSUTF8StringEncoding error:nil];
文件讀取: [NSString stringWithContentsOfFile:@"路徑"
encoding:NSUTF8StringEncoding error:nil];
根據NSURL對象來讀取文件內容。
* [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:
&err];
6 NSString的常見方法:
- (NSString *)uppercaseString;
全部字符轉爲大寫字母
- (NSString *)lowercaseString
全部字符轉爲小寫字母
- (NSString *)capitalizedString首字母變大寫,其他字母都變小寫。
一個句子中有多個單詞,那麼會將每個單詞的首字母 變成大寫,其餘字母變成小寫
- (BOOL)isEqualToString:(NSString *)aString;
兩個字符串的內容相同就返回YES, 否則返回NO
注意: == 比較的是兩個對象的地址是否相同, 不是字符串內容
- (NSComparisonResult)compare:(NSString *)string;這個方法用來比較兩個字符串內容的大小
比較方法: 逐個字符地進行比較ASCII值,返回NSComparisonResult作爲比較結果
NSComparisonResult是一個枚舉,有3個值:
如果左側 > 右側,返回NSOrderedDescending,如果左側 < 右側,返回NSOrderedAscending,
如果左側 == 右側返回NSOrderedSame
- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
忽略大小寫進行比較,返回值與compare:一致
- (BOOL)hasPrefix:(NSString *)aString;
是否以aString開頭
- (BOOL)hasSuffix:(NSString *)aString;
是否以aString結尾
- (NSRange)rangeOfString:(NSString *)aString;
用來檢查字符串內容中是否包含了aString
如果包含, 就返回aString的範圍
如果不包含, NSRange的location爲NSNotFound, length爲0
反方向搜索:[str rangeOfString: @”str” options: NSBackwardsSearch]; // 從後向前 搜索
- (NSString *)substringFromIndex:(NSUInteger)from;
從指定位置from開始(包括指定位置的字符)到尾部
- (NSString *)substringToIndex:(NSUInteger)to;
從字符串的開頭一直截取到指定的位置to,但不包括該位置的字符
- (NSString *)substringWithRange:(NSRange)range;
按照所給出的NSRange從字符串中截取子串
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替換target
- (NSUInteger)length;
返回字符串的長度(有多少個字符,無論中文字符、英文字符等等,一個字符就是一個字符)
- (unichar)characterAtIndex:(NSUInteger)index;
返回index位置對應的字符
字符串轉爲基本數據類型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (char *)UTF8String; // 在操作SQLite數據庫時纔會用到
轉爲C語言中的字符串。
/** 參考代碼:
C語言字符串:
char *name = “steve”;
NSString *s1 = @"123”; char *s2 = s1.UTF8String; printf("%s", s2);
*/
去除所有的空格[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
* NSString *s1 = @"aa"; s1 = @"bb";
這種情況只是指針變量s1 重新指向了, 分配好的字符串空間中的內容並沒有發生改變。
不適用NSString進行拼接