当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust char.decode_utf16用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 char.decode_utf16。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。