c# - 如何可靠地确定 C# 中字符的宽度?
问题描述
我正在编写一个 C# 程序,并使用固定宽度的字体来显示所有内容。在这种字体下,每个 Unicode 字符要么占据 1 个字符宽度,要么占据 2 个字符宽度。在程序中,有一个特性需要判断一个特定的字符占据1个字符宽度还是2个字符宽度。起初我使用正则表达式[^\x00-\xFF]
来解决问题。如果一个字符匹配它,它占用 1 个字符宽度,否则它是 2 个字符宽度。但后来我发现这是不对的。例如,这些字符┌─┬┐│├┼┤┴┘
不在范围内,[^\x00-\xFF]
但它们都只占用 1 个字符宽度。我想知道在C#中使用固定宽度字体时如何确定特定字符占用1个字符宽度或2个字符宽度?
解决方案
我也在寻找相同问题的答案……但我还没有找到。顺便说一句,我终于写了一个库来获取字符长度(使用Console.Write()和Console.CursorLeft生成显示字符长度的范围信息,然后转换为C#代码,当获取字符长度时,使用二进制搜索更高的速度)
nuget:NullLib.ConsoleEx 项目:https ://github.com/SlimeNull/NullLib.ConsoleEx
推荐阅读
- node.js - 使正则表达式出现的数组不起作用
- c# - 如何让 WinForms RichTextBox 正确绘制线条而不必突出显示它们?
- sqlite - SQLite3; 如何处理事务提交或回滚中的失败?
- swift - SwiftUI 导航栏颜色
- python - 查找第一个非空和非空字符串值
- python - mpi4py - 获取 2 CPU 服务器上的处理器编号
- google-apps-script - 如何使用 Google App Scripts 在 Classroom 中获取 Meet 代码列表到 Google Sheet
- git - git main 和链接工作树之间的区别?
- django - 如何使用 Django 表单显示错误消息?
- reactjs - 在 React 中,我可以在功能组件之外使用 useState 的 set 功能吗?