第 17 章 字符串与文本(1)
吉姆•布兰迪
字符串是一个光秃秃的数据结构,其途经之地会出现很多重复的处理。它简直是隐藏重要信息的“完美”手段。
——Alan Perlis,警句 #34
本书一直在使用 Rust 的主要文本类型 String、str 和 char。3.7 节曾讲解过字符和字符串字面量的语法,也展示过字符串在内存中的表示方式。在本章中,我们将更详细地介绍文本处理技术。
本章包括如下内容。
提供一些 Unicode 背景知识来帮助你理解标准库的设计。
讲解表示单个 Unicode 码点的 char 类型。
讲解 String 类型和 str 类型,二者是表示拥有和借用的 Unicode 字符序列。它们有各种各样的方法来构建、搜索、修改和迭代其内容。
介绍 Rust 的字符串格式化工具,比如 println! 宏和 format! 宏。你可以编写自己的宏来处理格式化字符串,并扩展它们以支持自己的类型。
概述 Rust 对正则表达式的支持。
讨论为什么 Unicode 的规范化很重要,并展示如何在 Rust 中对其进行规范化。
17.1 一些 Unicode 背景知识
本书是关于 Rust 而不是 Unicode 的,后者已经有专门的书介绍它了。但是,Rust 的字符类型和字符串类型都是围绕 Unicode 设计的。此处介绍一些 Unicode 的背景知识有助于更好地理解 Rust。
17.1.1 ASCII、Latin-1 和 Unicode
Unicode 和 ASCII 对于从 0 到 0x7f 的所有 ASCII 码点是一一对应的,比如,它们都为字符 * 分配了码点 42。同样,Unicode 也将 0 到 0xff 分配给了与 ISO/IEC 8859-1 字符集相同的字符,这是 ASCII 字符集用于西欧语言的 8 位超集。Unicode 将此码点范围称为 Latin-1 码块,因此我们也将使用耳熟能详的名称 Latin-1 来指代 ISO/IEC 8859-1。
由于 Unicode 是 Latin-1 的超集,因此将 Latin-1 转换为 Unicode 甚至不需要查表:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
Rust 字符串和文本处理深入介绍了 Rust 中关于字符串和文本处理的内容,包括 Unicode 背景知识、字符类型、正则表达式支持以及对 Unicode 规范化的重要性。文章还涵盖了 Rust 中处理数字和字符大小写转换的方法,以及 <code>String</code> 类型和 <code>str</code> 类型的介绍。此外,还探讨了移除文本、替换文本、搜索与迭代的约定,以及以 UTF-8 格式访问文本的方法。文章还介绍了推迟分配的概念,介绍了使用 <code>std::borrow::Cow</code> 的方法。总体而言,本文内容详实,适合对 Rust 字符串和文本处理感兴趣的读者阅读。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论