NSString(不可變)與 NSMutableString(可變)是 Foundation 框架處理文本的基石。
// 字面量(常量區)
NSString *s1 = @"iPhone";
// alloc/init
NSString *s2 = [[NSString alloc] initWithString:@"iOS"];
// 格式化
NSInteger v = 6;
NSString *s3 = [[NSString alloc] initWithFormat:@"iPhone %ld", v];
// 便利構造器
NSString *s4 = [NSString stringWithFormat:@"iOS %ld", v];
| 操作 | 方法示例 |
|---|---|
| 長度 | [str length] / str.length |
| 前綴/後綴判斷 | [str hasPrefix:@"ab"] / [str hasSuffix:@"cd"] |
| 子串截取 | [str substringToIndex:3] [str substringFromIndex:6] [str substringWithRange:NSMakeRange(3,3)] |
| 拼接 | [s1 stringByAppendingString:s2] [NSString stringWithFormat:@"%@%@", s1, s2] |
| 替換 | [str stringByReplacingOccurrencesOfString:@"N" withString:@"C"] |
| 比較 | [s1 isEqualToString:s2] (內容) vs s1 == s2 (指針) |
| 數值轉換 | [str intValue] [str integerValue] [str floatValue] |
| 大小寫 | [str uppercaseString] [str lowercaseString] [str capitalizedString] |
NSMutableString *ms = [NSMutableString stringWithCapacity:0];
[ms appendString:@"iPhone"];
[ms appendFormat:@" %ld", 15];
[ms insertString:@" " atIndex:6];
[ms deleteCharactersInRange:NSMakeRange(0, 7)];
[ms replaceCharactersInRange:NSMakeRange(ms.length-3, 3) withString:@"jpg"];
NSMutableString *name = [NSMutableString stringWithString:@"藍鷗.png"];
if ([name hasSuffix:@".png"]) {
[name replaceCharactersInRange:NSMakeRange(name.length-3, 3) withString:@"jpg"];
} else {
[name appendString:@".jpg"];
}
// 結果:藍鷗.jpg
retain/release。NSString 字面量駐留在常量區,不可變優化共享。NSMutableString 避免大量中間對象分配。