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
相关推荐
代码山河18 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
释厄62319 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
传奇开心果编程21 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
小嘉丶学长1 天前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
小李不想当小白1 天前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
瓦瓦gogo1 天前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
adinnet20261 天前
电商客服对话知识库的自学习闭环与质量演进机制
学习
lazy H1 天前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
试剂界的爱马仕1 天前
α-Cyano-4-hydroxycinnamic acid(CHCA)用作 MALDI-TOF 基质的配制与使用
大数据·人工智能·深度学习·学习
Liben1 天前
Weex开发踩坑记录
android·前端·ios