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
相关推荐
是隼人8 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
大衛說8 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
吃好睡好便好9 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学运维的Kysan10 小时前
暑假运维学习打卡第二十九天8.29
学习
zbyyd10 小时前
Linux 进程间通信学习笔记
linux·笔记·学习
一条破秋裤10 小时前
02_软件安装与新建工程
学习
来了就未晚11 小时前
Python基础 学习代码存储与命名规范
开发语言·python·学习
GHL28427109011 小时前
用codex做一个简单技能学习
学习·ai
西西弗Sisyphus12 小时前
模型训练 不同批次大小与学习率下的训练损失对比(2)
学习·batchsize·lr·learning rate
软件开发技术深度爱好者12 小时前
在线学习实践 TypeScript 的官方Playground(演练场)使用介绍
javascript·学习·typescript