gpt4 book ai didi

c# - 如何格式化汉字以适合列?

转载 作者:太空狗 更新时间:2023-10-29 21:52:45 25 4
gpt4 key购买 nike

我正在尝试以面向列的方式打印一些信息。一切都适用于拉丁字符,但是当打印汉字时,列停止对齐。让我们考虑一个例子:

var latinPresentation1 = "some text".PadRight(30) + "| " + 23;
var latinPresentation2 = "some longer text".PadRight(30) + "| " + 23;

Console.WriteLine(latinPresentation1);
Console.WriteLine(latinPresentation2);

Console.WriteLine("..............................................");

var chinesePresentation1 = "一些文字".PadRight(30) + " | " + 23;
var chinesePresentation2 = "一些較長的文字".PadRight(30) + "| " + 23;

Console.WriteLine(chinesePresentation1);
Console.WriteLine(chinesePresentation2);

输出:

some text                     | 23
some longer text | 23
.................................................
一些文字 | 23
一些較長的文字 | 23

可以看出,中文没有按列对齐。重要说明:这只是问题的介绍;它不会在控制台应用程序中使用。谁能帮我解决这个问题?

最佳答案

您可以使用 TextRenderer.MeasureText System.Windows.Forms 程序集中的方法基于字符串宽度而不是字符数构建输出文本。

这是 util 方法:

public static string FillWithSpaces(this string text, int width, Font font)
{
while (TextRenderer.MeasureText(text, font).Width < width)
{
text += ' ';
}
return text;
}

以及用法:

var font = new Font("Courier New", 10.0F);
var padding = 340;

var latinPresentation1 = "some text ".FillWithSpaces(padding, font) + "| 23";
var latinPresentation2 = "some longer text".FillWithSpaces(padding, font) + "| 23";

var chinesePresentation1 = "一些文字".FillWithSpaces(padding, font) + "| 23";
var chinesePresentation2 = "一些較長的文字".FillWithSpaces(padding, font) + "| 23";

var result = latinPresentation1 + Environment.NewLine +
latinPresentation2 + Environment.NewLine +
".............................................." + Environment.NewLine +
chinesePresentation1 + Environment.NewLine +
chinesePresentation2;

该解决方案需要填充参数(以 px 为单位)和使用的字体。

关于c# - 如何格式化汉字以适合列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54216063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com