本文简要介绍rust语言中 char.decode_utf16
的用法。
用法
pub fn decode_utf16<I>(iter: I) -> DecodeUtf16<<I as IntoIterator>::IntoIter> where I: IntoIterator<Item = u16>,
在 iter
中的 UTF-16 编码代码点上创建一个迭代器,将未配对的代理返回为 Err
s。
例子
基本用法:
use std::char::decode_utf16;
// 𝄞mus<invalid>ic<invalid>
let v = [
0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
];
assert_eq!(
decode_utf16(v)
.map(|r| r.map_err(|e| e.unpaired_surrogate()))
.collect::<Vec<_>>(),
vec![
Ok('𝄞'),
Ok('m'), Ok('u'), Ok('s'),
Err(0xDD1E),
Ok('i'), Ok('c'),
Err(0xD834)
]
);
通过用替换字符替换Err
结果可以获得有损解码器:
use std::char::{decode_utf16, REPLACEMENT_CHARACTER};
// 𝄞mus<invalid>ic<invalid>
let v = [
0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834,
];
assert_eq!(
decode_utf16(v)
.map(|r| r.unwrap_or(REPLACEMENT_CHARACTER))
.collect::<String>(),
"𝄞mus�ic�"
);
相关用法
- Rust char.is_control用法及代码示例
- Rust char.is_alphanumeric用法及代码示例
- Rust char.len_utf16用法及代码示例
- Rust char.is_digit用法及代码示例
- Rust char.is_ascii_graphic用法及代码示例
- Rust char.is_uppercase用法及代码示例
- Rust char.to_ascii_lowercase用法及代码示例
- Rust char.is_ascii_uppercase用法及代码示例
- Rust char.escape_unicode用法及代码示例
- Rust char.is_alphabetic用法及代码示例
- Rust char.is_ascii_control用法及代码示例
- Rust char.from_u32_unchecked用法及代码示例
- Rust char.is_ascii_alphabetic用法及代码示例
- Rust char.eq_ignore_ascii_case用法及代码示例
- Rust char.is_ascii用法及代码示例
- Rust char.make_ascii_lowercase用法及代码示例
- Rust char.is_whitespace用法及代码示例
- Rust char.to_lowercase用法及代码示例
- Rust char.is_ascii_punctuation用法及代码示例
- Rust char.to_digit用法及代码示例
- Rust char.from_digit用法及代码示例
- Rust char.is_lowercase用法及代码示例
- Rust char.encode_utf16用法及代码示例
- Rust char.len_utf8用法及代码示例
- Rust char.escape_debug用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 char.decode_utf16。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。