Objective-C 学习 NSString 和 NSMutableString的基本功能详解

文章目录

NSString

创建

实例方法 (allod + init)

- (Instancetype) initWithCharacters: (const unichar *)charactors length: length
  • (instancetype)initWithCharacters: (const unichar *)characters length:(NSUInteger)length

两个参数:

  • characters --- 传入一个 unichar 数组(Unicode 字符数组)
  • length --- 告诉方法数组里有几个字符
objective-c 复制代码
int main(int argc, char* argv[]) {
    unichar data[6] = {97, 98, 99, 100, 101, 102};
    NSString* str = [[NSString alloc] initWithCharacters: data length: 5];
    NSLog(@"%@", str); 
    return 0;
}

输出:

objective-c 复制代码
abcde
从C字符串转换

- (Instancetype) initWithUTF8String: (const char *)CString

+ (instancetype) stringWithUTF8String: 是把 C语言字符串 转换成 NSString 的方法。

  • (instancetype) stringWithUTF8String:(const char *)nullTerminatedCString
objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "hello";
    NSString* str = [[NSString alloc] initWithUTF8String: data];
    NSLog(@"%@", str);
    return 0;
}
普通初始化
objective-c 复制代码
NSString* str = [[NSString alloc] initWithString:@"hello"];

字面量

objective-c 复制代码
NSString* str = @"hello world"; 

类方法

普通初始化

[str stringWithString: @"hello"];

格式化
objective-c 复制代码
int main(int argc, char* argv[]) {
    NSString* str = [NSString stringWithFormat: @"hello %d", 8];
    NSLog(@"%@", str);
    return 0;
}

输出:

objective-c 复制代码
hello 8
从C字符串转换

+ (instancetype) stringWithUTF8String: (const char*) Cstr;

objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "hello";
    NSString* str = [NSString stringWithUTF8String: data];
    NSLog(@"%@", str);
    return 0;
}

NSString常用功能

字符串追加固定字符串

[str stringByAppendingstring: ]

objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "hello";
    NSString* str = [NSString stringWithUTF8String: data];
    NSLog(@"%@", str);
    str = [str stringByAppendingString: @" world"];
    NSLog(@"%@", str);
    return 0;
}

获取对应的C 风格字符串

[str UTF8String];

追加带变量的字符串

[str stringByAppendFormat: ]

objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "helloabcdefghigk";
    NSString* str = [NSString stringWithUTF8String: data];
    NSLog(@"%@", str);
    str = [str stringByAppendingFormat: @" hello %d", 7];
    NSLog(@"%@", str);
    return 0;
}

输出:

复制代码
helloabcdefghigk
helloabcdefghigk hello 7

获取字符串长度

[str length];

获取前n个字符

[str substringToIndex: index]

objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "helloabcdefghigk";
    NSString* str = [NSString stringWithUTF8String: data];
    NSLog(@"%@", str);
    str = [str substringToIndex: 6];
    NSLog(@"%@", str);
    return 0;
}

输出:

objective-c 复制代码
helloa

获取从索引为 n 的字符开始, 与后面的所有字符组成的字符串

[str substringFromIndex: index];

获取从索引为 m 的字符开始, 与后面的4个字符组成的字符串

[str substringWithRange: NSMakeRange (m, n)];

获取某字符串在字符串中出现的初始位置

objective-c 复制代码
int main(int argc, char* argv[]) {
    char* data = "helloabcdefghigk";
    NSString* str = [NSString stringWithUTF8String: data];
    NSLog(@"%@", str);
    NSRange pos = [str rangeOfString: @"abc"];
    NSLog(@"abc 出现的开始为位置为: %ld,长度为 %ld", pos.location, pos.length);
    return 0;
}

NSRange 类型的变量,NSRange 并不是一个类,它只是一个结构体,它包括了 location 和 length 两个 unsigned int 整型值,分别代表起始位置和长度。Objective-C 还提供了 NSMakeRange()函数来创建 NSRange 变量。实际上,后面还会见到 Objective-C 提供的大量 NSXxx 结构体类型,而且 Objective-C 也会提供对应的 NSXxxMake()函数来创建对应的结构体变量。

输出:

objective-c 复制代码
helloabcdefghigk
abc 出现的开始为位置为: 5,长度为 3

将字符串的所有字符串转换为大写

[str uppercaseString];

将字符串的所有字符串转换为小写

[str lowercaseString];

NSMutableString

追加固定字符串

[str appendString: @"hello"];

追加带变量字符串

[str appendStringFormat: @"hello %d", 8];

插入字符串

[str insertString: NSString atIndex: index]

objective-c 复制代码
int main(int argc, char* argv[]) {
    NSMutableString* str = [NSMutableString stringWithString: @"helloabcdefg"];
    NSLog(@"%@", str);
    
    [str insertString: @" xinyan " atIndex: 6];
    NSLog(@"%@", str);
    return 0;
}

输出:

objective-c 复制代码
helloabcdefg
helloa xinyan bcdefg

删除从位置 m 开始, 长度为 n 的所有字符

[deleteCharactersInRange: NSMakerange(m, n)]

objective-c 复制代码
int main(int argc, char* argv[]) {
    NSMutableString* str = [NSMutableString stringWithString: @"helloabcdefg"];
    NSLog(@"%@", str);
    
    [str deleteCharactersInRange: NSMakeRange(4, 5)];
    NSLog(@"%@", str);
    return 0;
}

将从位置 m 开始, 长度为 n 的所有字符替换

[str replaceCharatersInRange: NSMakeRange(m, n) withString: @"hello"];

objective-c 复制代码
int main(int argc, char* argv[]) {
    NSMutableString* str = [NSMutableString stringWithString: @"helloabcdefg"];
    NSLog(@"%@", str);
    
    [str replaceCharactersInRange: NSMakeRange(4, 5) withString: @"xxxx"];
    NSLog(@"%@", str);
    return 0;
}

输出;

objective-c 复制代码
helloabcdefg
hellxxxxefg
相关推荐
OSwich4 分钟前
【 Godot 4 学习笔记】数组(Array)
笔记·学习·godot
程序员-小李12 分钟前
uv 学习总结:从零到一掌握现代化 Python 工具链
python·学习·uv
nashane1 小时前
HarmonyOS 6学习:页面跳转弹窗状态保持全解析
学习·华为·harmonyos·harmonyos 5
山楂树の1 小时前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
SameX1 小时前
独立开发一个把走过的路变成 km² 的 App,聊聊 25m 网格和后台 GPS 的坑
ios
小郑加油1 小时前
python学习Day10天:列表进阶 + 内置函数 + 代码简化
开发语言·python·学习
XD7429716363 小时前
科技早报晚报|2026年4月30日:Agent 安全壳、浏览器 iOS 测试台与可穿戴数据 API,今天更值得看的 3 个技术机会
科技·ios·开源项目·科技新闻·开发者工具
Bechamz3 小时前
大数据开发学习Day23
大数据·学习·ajax
坚持就完事了3 小时前
YARN资源管理器
大数据·linux·hadoop·学习
吃着火锅x唱着歌3 小时前
深度探索C++对象模型 学习笔记 第四章 Function语意学(2)
c++·笔记·学习