面试题答案
一键面试可能用到的库
在Rust中,处理字符串相关操作通常会用到标准库 std::string
和 std::str
。
关键步骤
- 检查字符串是否为有效的UTF - 8编码,Rust中字符串默认是UTF - 8编码的,这一步通常可以省略。
- 遍历字符串的每一个字符,检查是否为ASCII字符(ASCII字符的范围是U+0000到U+007F)。
- 如果所有字符都是ASCII字符,则将其转换为ASCII编码,在Rust中,
String
本身已经是UTF - 8编码,而ASCII是UTF - 8的子集,所以可以直接当作ASCII处理。如果包含非ASCII字符则返回错误。
示例代码
fn to_ascii(s: &str) -> Result<String, String> {
if s.bytes().all(|b| b <= 127) {
Ok(s.to_string())
} else {
Err("String contains non - ASCII characters".to_string())
}
}
你可以这样调用这个函数:
fn main() {
let ascii_str = "hello";
let non_ascii_str = "你好";
match to_ascii(ascii_str) {
Ok(result) => println!("Converted to ASCII: {}", result),
Err(error) => println!("Error: {}", error),
}
match to_ascii(non_ascii_str) {
Ok(result) => println!("Converted to ASCII: {}", result),
Err(error) => println!("Error: {}", error),
}
}