簡體   English   中英

獲取 char 的控制台寬度

[英]get console width of char

在 rust 中,如何獲取字符( char )的控制台(“終端”)寬度?

我想要控制台中顯示的“列寬”。 通常這是通過計算字符串中的字符來找到的; s.chars().count() 然而,一些 Unicode 字符的寬度超過一列。 有些是“全角”,有些是視覺上較大的字符,需要多個控制台列。

幾個例子

fn main() {
    // ASCII 'A'
    let c: char = '\u{41}';
    println!("{:?} len_utf8 {} len_utf16 {} as u128 0x{:08X}", c, c.len_utf8(), c.len_utf16(), c as u128);
    // full-width A
    let c: char = '\u{FF21}';
    println!("{:?} len_utf8 {} len_utf16 {} as u128 0x{:08X}", c, c.len_utf8(), c.len_utf16(), c as u128);
    // visually wide char NEW MOON WITH FACE
    let c: char = '\u{1F31A}';
    println!("{:?} len_utf8 {} len_utf16 {} as u128 0x{:08X}", c, c.len_utf8(), c.len_utf16(), c as u128);
}

鐵銹游樂場

印刷

'A' len_utf8 1 len_utf16 1 as u128 0x00000041
'A' len_utf8 3 len_utf16 1 as u128 0x0000FF21
'🌚' len_utf8 4 len_utf16 2 as u128 0x0001F31A

字符'LATIN CAPITAL LETTER A' A (U+0041)顯示為一個控制台列寬。

字符'FULLWIDTH LATIN CAPITAL LETTER A' A (U+FF21)顯示兩個控制台列寬。

字符'NEW MOON WITH FACE' 🌚 (U+1F31A)顯示三個控制台列寬。

在 rust 中,如何找到char控制台列寬?

使用unicode_width板條箱。 文檔: https ://docs.rs/unicode-width/latest/unicode_width/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM