[英]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.