Rust 中的字符类型 char 用于表示单个 Unicode 标量值,占用 4 个字节(32 位)。与许多其他语言不同,Rust 的 char 直接支持 Unicode,这意味着它可以表示任何有效的 Unicode 字符,包括 ASCII、中文、表情符号等。

let c1: char = 'a';
let c2: char = '中';
let c3: char = '❤';
println!("{}, {}, {}", c1, c2, c3);
// 输出: a, 中, ❤

也可以使用 Unicode 转义:

let emoji: char = '\u{1F600}';

注意:Rust 使用单引号 ' 定义字符,双引号 " 定义字符串。混淆两者会导致编译错误。

字符类型的基本操作

Rust 为 char 类型提供了多种内置方法,用于字符分类和转换。

fn main() {
    let c = 'A';
    
    // 类型判断
    println!("是字母? {}", c.is_alphabetic());
    println!("是数字? {}", c.is_numeric());
    println!("是字母数字? {}", c.is_alphanumeric());
    println!("是控制字符? {}", c.is_control());
    println!("是空白? {}", c.is_whitespace());
    println!("是小写? {}", c.is_lowercase());
    println!("是大写? {}", c.is_uppercase());
    
}

单字节字符

Rust 中的char默认占 4 字节;如果你需要完全像 C 语言一样使用单字节字符,应该使用u8i8,并结合字节字面量。

// C 语言:
// char c = 'A';           // 1 字节,可能是 signed 或 unsigned
// unsigned char uc = 'B'; // 1 字节,无符号
// signed char sc = -1;    // 1 字节,有符号

// Rust :
let c: u8 = b'A';      // 1 字节,等价于 unsigned char
let sc: i8 = -1;       // 1 字节,等价于 signed char
let raw: u8 = 65;      // 1 字节,直接数值

println!("{}",c as char); //输出 A