首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C NSString 完全指南:創建、比較、轉換、查找、拼接、截取、編碼

     編輯:關於C語言

創建字符串

方式代碼示例
字面量NSString *s = @"常量字符串";
空字符串[NSString string] / [[NSString alloc] init]
複製現有[NSString stringWithString:other] / [[NSString alloc] initWithString:other]
格式化[NSString stringWithFormat:@"%d", 42] / [[NSString alloc] initWithFormat:@"%@", obj]
字符數組[NSString stringWithCharacters:chars length:len]
C 字符串[NSString stringWithUTF8String:cstr] / [[NSString alloc] initWithCString:cstr encoding:NSUTF8StringEncoding]
文件/URL[NSString stringWithContentsOfFile:path encoding:enc error:&err]

比較操作


// 內容比較(推薦)
if ([str1 isEqualToString:str2]) { ... }

// 指針比較(極少用)
if (str1 == str2) { ... } // 同一對象

// 大小比較(排序用)
NSComparisonResult r = [str1 compare:str2];           // 區分大小寫
NSComparisonResult r = [str1 caseInsensitiveCompare:str2]; // 忽略大小寫
NSComparisonResult r = [str1 localizedCompare:str2];  // 本地化規則
// 返回: NSOrderedAscending(-1) / NSOrderedSame(0) / NSOrderedDescending(1)

常用屬性與轉換


NSUInteger len = [str length];              // 字符數 (UTF-16 代碼單元數)
BOOL empty = (len == 0);

// 大小寫轉換
NSString *upper = [str uppercaseString];
NSString *lower = [str lowercaseString];
NSString *cap = [str capitalizedString];    // 每詞首字母大寫

// 基本類型轉換
int i = [str intValue];
float f = [str floatValue];
double d = [str doubleValue];
BOOL b = [str boolValue]; // @"YES"/@"NO"/@"TRUE"/@"FALSE" (不區分大小寫)

// 字符串 ↔ 數據
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

分割與組合


// 分割為數組
NSArray *parts = [str componentsSeparatedByString:@","];
NSArray *lines = [str componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

// 組合數組為字符串
NSString *joined = [array componentsJoinedByString:@" | "];

截取子串


// 從開頭到索引 (不含)
NSString *prefix = [str substringToIndex:3];

// 從索引到結尾
NSString *suffix = [str substringFromIndex:3];

// 任意範圍
NSRange r = NSMakeRange(2, 4);
NSString *mid = [str substringWithRange:r];

拼接


NSString *s1 = @"Hello";
NSString *s2 = @"World";

// 格式化拼接
NSString *s3 = [NSString stringWithFormat:@"%@ %@", s1, s2];

// 追加拼接
NSString *s4 = [s1 stringByAppendingString:@" "];
NSString *s5 = [s1 stringByAppendingFormat:@" %@", s2];

查找與匹配


// 子串查找
NSRange r = [str rangeOfString:@"sub"];
if (r.location != NSNotFound) { /* 找到 */ }

// 正則表達式 (iOS 4+)
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\d+" options:0 error:nil];
NSArray *matches = [regex matchesInString:str options:0 range:NSMakeRange(0, [str length])];

// 前綴/後綴
BOOL hasPrefix = [str hasPrefix:@"pre_"];
BOOL hasSuffix = [str hasSuffix:@".txt"];

編碼處理

  • 內部存儲:UTF-16 (unichar 數組)
  • 常用編碼常量:NSUTF8StringEncoding、NSASCIIStringEncoding、NSUnicodeStringEncoding
  • 讀取未知編碼文件:initWithContentsOfFile:usedEncoding:error: 自動檢測

現代最佳實踐

  1. 優先使用字面量 @\"...\" 和格式化 @\"%@\"
  2. 比較內容用 isEqualToString:,排序用 compare: 系列
  3. 大量拼接用 NSMutableString,最終 copy 歸檔
  4. 處理用戶輸入文本時注意 Unicode 正規化 (precomposedStringWithCanonicalMapping)
  5. 文件 I/O 顯式指定 NSUTF8StringEncoding
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved