字符 char
char, 表示 Unicode 单个字符, 比如 a
, 使用 32-bit 的空间, 即 4 个字节, 使用单引号引用.
#![allow(unused)] fn main() { use std::mem::size_of_val; let char_a = 'a' as char; assert_eq!(size_of_val(&char_a), 4); }
一个 char 表示一个 Unicode code point, 范围是:
- 0x0000 - 0xD7FF
- 0xE000 - 0x10FFFF
只有 u8 类型可以用 as
来转换成 char.
char 的内存布局
上面提到了, char 占用4个字节. 我们可以用代码来验证它:
use std::mem::size_of_val; #[allow(unused_variables)] fn main() { let you: char = '你'; let char_a: char = 'a'; assert_eq!(size_of_val(&you), 4); }
然后在调试器中, 分别查看两个变量的内存, 可以看到 '你'
的内存值是 0b0000 4f60
:
而字符'a'
的内存值是 0b0000 0061
:
char 的常用方法
- 大小写转换
to_lowercase()
to_uppercase()
to_ascii_lowercase()
to_ascii_uppercase()
make_ascii_lowercase()
make_ascii_uppercase()
- 从
u32
转成 char, 因为 char 的取值范围更小from_u32()
from_u32_unchecked()
- 判断字符的范围
is_alphabetic()
is_alphanumeric()
is_ascii_alphabetic()
is_ascii_alphabetic()
is_ascii()
is_control()
is_ascii_control()
is_digit()
is_ascii_digit()
is_lowercase()
is_uppercase()
is_ascii_lowercase()
is_ascii_uppercase()
is_whitespace()
is_ascii_whitespace()
char 转换为整数
to_digit(self, radix: u32) -> Option<u32>
, 将字符转换成 u32 类型的整数is_ascii_digit(&self) -> bool
, 判断字符的范围是不是位于'0' ..= '9'