basic_usage/
basic_usage.rs1use string_width::{
5 AmbiguousWidthTreatment, StringWidthOptions, string_width, string_width_with_options,
6};
7
8fn main() {
9 println!("=== Basic String Width Examples ===\n");
10
11 let text = "Hello, World!";
13 println!("Text: '{}'", text);
14 println!("Width: {}\n", string_width(text));
15
16 let text = "你好世界";
18 println!("Text: '{}'", text);
19 println!("Width: {}\n", string_width(text));
20
21 let text = "Hello 世界!";
23 println!("Text: '{}'", text);
24 println!("Width: {}\n", string_width(text));
25
26 let text = "Hello 👋 World 🌍";
28 println!("Text: '{}'", text);
29 println!("Width: {}\n", string_width(text));
30
31 let text = "Family: 👨👩👧👦";
33 println!("Text: '{}'", text);
34 println!("Width: {}\n", string_width(text));
35
36 let text = "Numbers: 1️⃣ 2️⃣ 3️⃣";
38 println!("Text: '{}'", text);
39 println!("Width: {}\n", string_width(text));
40
41 let text = "Flags: 🇺🇸 🇯🇵 🇬🇧";
43 println!("Text: '{}'", text);
44 println!("Width: {}\n", string_width(text));
45
46 let text = "\x1b[31mRed text\x1b[0m";
48 println!("Text with ANSI: '{}'", text);
49 println!("Width (ANSI stripped): {}", string_width(text));
50
51 let options = StringWidthOptions {
52 count_ansi: true,
53 ambiguous_width: AmbiguousWidthTreatment::Narrow,
54 };
55 println!(
56 "Width (ANSI counted): {}\n",
57 string_width_with_options(text, options)
58 );
59
60 let text = "±×÷";
62 println!("Text: '{}'", text);
63 println!("Width (narrow): {}", string_width(text));
64
65 let options = StringWidthOptions {
66 count_ansi: false,
67 ambiguous_width: AmbiguousWidthTreatment::Wide,
68 };
69 println!(
70 "Width (wide): {}\n",
71 string_width_with_options(text, options)
72 );
73
74 let text = "a\u{200B}b\u{200C}c";
76 println!("Text with zero-width chars: 'a\\u{{200B}}b\\u{{200C}}c'");
77 println!("Width: {}\n", string_width(text));
78
79 let text = "e\u{0301}"; println!("Text with combining: 'e\\u{{0301}}'");
82 println!("Width: {}\n", string_width(text));
83}