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
相关推荐
2501_916008892 小时前
iOS应用开发工具全面解析:如何选择与优化开发效率
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
a4493153622 小时前
iPhone Face ID 故障的分层诊断——原深感系统与主板加密配对机制
macos·ios·电脑·cocoa·iphone
白玉cfc3 小时前
【iOS】内存五大分区
macos·ios·cocoa
a1117765 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao5 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
你想知道什么?7 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御7 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
二流小码农7 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
AOwhisky8 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发