NSString簡單細說(一)—— NSString整體架構(gòu)

前言

NSString雖然我們每天都用也很簡單昏鹃,這里我就總結(jié)一下兴蒸,做到NSString簡單細說深說盾饮,這里首先要對整個NSString有整體的感知和認識,詳細的以后會續(xù)寫戏阅,不對的地方大家批評補充昼弟。

蘋果開發(fā)文檔


NSString功能架構(gòu)

下面我們開始,首先看一下NSString有哪些功能相對應(yīng)的屬性和類奕筐。

功能 方法名
簡單實例化 1. + (instancetype) string;
2. - (instancetype) init
3. - (instancetype) initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;
4. - (instancetype) initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer;
5. - (instancetype) initWithCharacters:(const unichar *)characters length:(NSUInteger)length;
6. - (instancetype) initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
7. - (instancetype) initWithString:(NSString *)aString;
8. - (instancetype) initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;
9. - (instancetype) initWithUTF8String:(const char *)nullTerminatedCString;
10. - (instancetype) initWithFormat:(NSString *)format, ...;
11. - (instancetype) initWithFormat:(NSString *)format arguments:(va_list)argList;
12. - (instancetype) initWithFormat:(NSString *)format locale:(id)locale, ...;
13. - (instancetype) initWithFormat:(NSString *)format locale:(id)locale arguments:(va_list)argList;
14. - (instancetype) initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;
15. + (instancetype) stringWithFormat:(NSString *)format, ...;
16. + (instancetype) localizedStringWithFormat:(NSString *)format, ...;
17. + (NSString ) localizedUserNotificationStringForKey:(NSString)key arguments:(NSArray*)arguments;
18. + (instancetype) stringWithCharacters:(const unichar *)characters length:(NSUInteger)length;
19. + (instancetype) stringWithString:(NSString *)string;
20. + (instancetype) stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;
21. + (instancetype) stringWithUTF8String:(const char *)nullTerminatedCString;
文件實例化 1. + (instancetype) stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
2. - (instancetype) initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
3. + (instancetype) stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError * _Nullable *)error;
4. - (instancetype) initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError * _Nullable *)error;
URL實例化 1. + (instancetype) stringWithContentsOfURL:(NSURL*)url encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
2. - (instancetype) initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
3. + (instancetype) stringWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError * _Nullable *)error;
4. - (instancetype) initWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError * _Nullable *)error;
寫向文件和URL 1. - (BOOL) writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
2. - (BOOL) writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError * _Nullable *)error;
獲取字符串長度 1. @property(readonly) NSUInteger length;
2. - (NSUInteger) lengthOfBytesUsingEncoding:(NSStringEncoding)enc;
3. - (NSUInteger) maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc;
獲取字符字節(jié) 1. - (unichar) characterAtIndex:(NSUInteger)index;
2. - (void) getCharacters:(unichar *)buffer range:(NSRange)range;
3. - (BOOL) getBytes:(void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(NSRangePointer)leftover;
獲取C字符串 1. - (const char *) cStringUsingEncoding:(NSStringEncoding)encoding;
2. - (BOOL) getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding;
3. @property(readonly) const char *UTF8String;
字符串比較 1. - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
2. - (NSComparisonResult) localizedCaseInsensitiveCompare:(NSString *)string;
3. - (NSComparisonResult) compare:(NSString *)string;
4. - (NSComparisonResult) localizedCompare:(NSString *)string;
5. - (NSComparisonResult) compare:(NSString *)string options:(NSStringCompareOptions)mask;
6. - (NSComparisonResult) compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare;
7. - (NSComparisonResult) compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(id)locale;
8. - (NSComparisonResult) localizedStandardCompare:(NSString *)string;
9. - (BOOL) hasPrefix:(NSString *)str;
10. - (BOOL) hasSuffix:(NSString *)str;
11. - (BOOL) isEqualToString:(NSString *)aString;
12. @property(readonly) NSUInteger hash;
字符串的合并 1. - (NSString *) stringByAppendingFormat:(NSString *)format, ...;
2. - (NSString *)stringByAppendingString:(NSString *)aString;
3. - (NSString *) stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex;
字符串的分割 1. - (NSArray<NSString *> *) componentsSeparatedByString:(NSString *)separator;
2. - (NSArray<NSString *> *) componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
3. - (NSString *) stringByTrimmingCharactersInSet:(NSCharacterSet *)set;
4. - (NSString *) substringFromIndex:(NSUInteger)from;
5. - (NSString *) substringWithRange:(NSRange)range;
6. - (NSString *) substringToIndex:(NSUInteger)to;
字符串的查詢 1. - (BOOL) containsString:(NSString *)str;
2. - (BOOL) localizedCaseInsensitiveContainsString:(NSString *)str;
3. - (BOOL) localizedStandardContainsString:(NSString *)str;
4. - (NSRange) rangeOfCharacterFromSet:(NSCharacterSet *)searchSet;
5. - (NSRange) rangeOfCharacterFromSet:(NSCharacterSet *) searchSet options:(NSStringCompareOptions)mask;
6. - (NSRange) rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
7. - (NSRange) rangeOfString:(NSString *)searchString;
8. - (NSRange) rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
9. - (NSRange) rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
10. - (NSRange) rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(NSLocale *)locale;
11. - (NSRange) localizedStandardRangeOfString:(NSString *)str;
12. - (void) enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block;
13. - (void) enumerateSubstringsInRange:(NSRange)range options:(NSStringEnumerationOptions)opts usingBlock:(void (^)(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop))block;
子字符串替換 1. - (NSString *) stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
2. - (NSString *) stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange;
3. - (NSString *) stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement;
線和段落區(qū)間 1. - (void) getLineStart:(NSUInteger *)startPtr end:(NSUInteger *)lineEndPtr contentsEnd:(NSUInteger *)contentsEndPtr forRange:(NSRange)range;
2. - (NSRange) lineRangeForRange:(NSRange)range;
3. - (void) getParagraphStart:(NSUInteger *)startPtr end:(NSUInteger *)parEndPtr contentsEnd:(NSUInteger *)contentsEndPtr forRange:(NSRange)range;
4. - (NSRange) paragraphRangeForRange:(NSRange)range;
返回給定區(qū)間 1. - (NSRange) rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
2. - (NSRange) rangeOfComposedCharacterSequencesForRange:(NSRange)range;
轉(zhuǎn)化屬性列表 1. - (id) propertyList;
2. - (NSDictionary *) propertyListFromStringsFileFormat;
畫字符串 1. - (void) drawAtPoint:(CGPoint)point withAttributes:(NSDictionary<NSString *,id> *)attrs;
2. - (void) drawInRect:(CGRect)rect withAttributes:(NSDictionary<NSString *,id> *)attrs;
3. - (void) drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSString *,id> *)attributes context:(NSStringDrawingContext *)context;
4. - (CGRect) boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSString *,id> *)attributes context:(NSStringDrawingContext *)context;
5. - (CGSize) sizeWithAttributes:(NSDictionary<NSString *,id> *)attrs;
折疊 1. - (NSString *) stringByFoldingWithOptions:(NSStringCompareOptions)options locale:(NSLocale *)locale;
字符串前綴分享 1. - (NSString *) commonPrefixWithString:(NSString *)str options:(NSStringCompareOptions)mask;
形改變 1. @property(readonly, copy) NSString *lowercaseString;
2. @property(readonly, copy) NSString *localizedLowercaseString;
3. - (NSString *)lowercaseStringWithLocale:(NSLocale *)locale;
4. @property(readonly, copy) NSString *uppercaseString;
5. @property(readonly, copy) NSString *localizedUppercaseString;
6. - (NSString *) uppercaseStringWithLocale:(NSLocale *)locale;
7. @property(readonly, copy) NSString *capitalizedString;
8. @property(readonly, copy) NSString *localizedCapitalizedString;
9. - (NSString *) capitalizedStringWithLocale:(NSLocale *)locale;
映射 1. @property(readonly, copy) NSString *decomposedStringWithCanonicalMapping;
2. @property(readonly, copy) NSString *decomposedStringWithCompatibilityMapping;
3. @property(readonly, copy) NSString *precomposedStringWithCanonicalMapping;
4. @property(readonly, copy) NSString *precomposedStringWithCompatibilityMapping;
獲取數(shù)值 1. @property(readonly) double doubleValue;
2. @property(readonly) float floatValue;
3. @property(readonly) int intValue;
4. @property(readonly) NSInteger integerValue;
5. @property(readonly) long long longLongValue;
6. @property(readonly) BOOL boolValue;
編碼 1. + (NSStringEncoding) stringEncodingForData:(NSData *)data encodingOptions:(NSDictionary<NSStringEncodingDetectionOptionsKey,id> *)opts convertedString:(NSString * _Nullable *)string usedLossyConversion:(BOOL *)usedLossyConversion;
2. + (NSString *) localizedNameOfStringEncoding:(NSStringEncoding)encoding;
3. - (BOOL) canBeConvertedToEncoding:(NSStringEncoding)encoding;
4. - (NSData *) dataUsingEncoding:(NSStringEncoding)encoding;
5. - (NSData *) dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)lossy;
6. @property(readonly, copy) NSString *description;
7. @property(readonly) NSStringEncoding fastestEncoding;
8. @property(readonly) NSStringEncoding smallestEncoding;
路經(jīng)相關(guān) 1. + (NSString *) pathWithComponents:(NSArray<NSString *> *)components;
2. @property(readonly, copy) NSArray<NSString *> *pathComponents;
3. - (NSUInteger) completePathIntoString:(NSString * _Nullable *)outputName caseSensitive:(BOOL)flag matchesIntoArray:(NSArray<NSString *> * _Nullable *)outputArray filterTypes:(NSArray<NSString *> *)filterTypes;
4. @property(readonly) const char *fileSystemRepresentation;
5. - (BOOL) getFileSystemRepresentation:(char *)cname maxLength:(NSUInteger)max;
6. @property(getter=isAbsolutePath, readonly) BOOL absolutePath;
7. @property(readonly, copy) NSString *lastPathComponent;
8. @property(readonly, copy) NSString *pathExtension;
9. @property(readonly, copy) NSString *stringByAbbreviatingWithTildeInPath;
10. - (NSString *) stringByAppendingPathComponent:(NSString *)str;
11.- (NSString *) stringByAppendingPathExtension:(NSString *)str;
12.@property(readonly, copy) NSString *stringByDeletingLastPathComponent;
13.@property(readonly, copy) NSString *stringByDeletingPathExtension;
14.@property(readonly, copy) NSString *stringByExpandingTildeInPath;
15.@property(readonly, copy) NSString *stringByResolvingSymlinksInPath;
16.@property(readonly, copy) NSString *stringByStandardizingPath;
17.- (NSArray<NSString *> *)stringsByAppendingPaths:(NSArray<NSString *> *)paths;
URL相關(guān) 1.- (NSString *) stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters;
2.@property(readonly, copy) NSString *stringByRemovingPercentEncoding;
語言標(biāo)記 1.- (void) enumerateLinguisticTagsInRange:(NSRange)range scheme:(NSString *)tagScheme options:(NSLinguisticTaggerOptions)opts orthography:(NSOrthography *)orthography usingBlock:(void (^)(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop))block;
2.- (NSArray<NSString *> *) linguisticTagsInRange:(NSRange)range scheme:(NSString *)tagScheme options:(NSLinguisticTaggerOptions)opts orthography:(NSOrthography *)orthography tokenRanges:(NSArray<NSValue *> * _Nullable *)tokenRanges;

看到這里可能大家暈了舱痘,還得吐槽下簡書的markdown有的*都不顯示,有時候顯示离赫。這些類屬性或者方法芭逝,可以參考下圖。

API-NSString-1
API-NSString-2
API-NSString-3
API-NSString-4
API-NSString-5
API-NSString-6
API-NSString-7
API-NSString-8
API-NSString-9
API-NSString-10

致謝

謝謝大家對我的持續(xù)關(guān)注渊胸。上面只是一個主要的框架展示旬盯,主要是讓大家對這個框架有一個大體的認識,后面的會細說每個方法和屬性的使用翎猛。

未完胖翰,待續(xù)~~~~,累了切厘,休息了萨咳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市疫稿,隨后出現(xiàn)的幾起案子培他,更是在濱河造成了極大的恐慌,老刑警劉巖而克,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靶壮,死亡現(xiàn)場離奇詭異怔毛,居然都是意外死亡员萍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門拣度,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碎绎,“玉大人螃壤,你說我怎么就攤上這事〗钐” “怎么了奸晴?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長日麸。 經(jīng)常有香客問我寄啼,道長,這世上最難降的妖魔是什么代箭? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任墩划,我火速辦了婚禮,結(jié)果婚禮上嗡综,老公的妹妹穿的比我還像新娘乙帮。我一直安慰自己,他們只是感情好极景,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布察净。 她就那樣靜靜地躺著,像睡著了一般盼樟。 火紅的嫁衣襯著肌膚如雪氢卡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天晨缴,我揣著相機與錄音异吻,去河邊找鬼。 笑死喜庞,一個胖子當(dāng)著我的面吹牛诀浪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播延都,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼雷猪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晰房?” 一聲冷哼從身側(cè)響起求摇,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殊者,沒想到半個月后与境,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡猖吴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年摔刁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片海蔽。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出欢唾,到底是詐尸還是另有隱情,我是刑警寧澤借宵,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站矾削,受9級特大地震影響壤玫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哼凯,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一垦细、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挡逼,春花似錦括改、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虱疏,卻和暖如春惹骂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背做瞪。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工对粪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人装蓬。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓著拭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牍帚。 傳聞我的和親對象是個殘疾皇子儡遮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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