4

目前我正在尝试在控制台中打印一些信息,但我正在尝试为所有结果提供相同的填充。

这里举个例子,你可以看到 CurrentBuildNumber 结果有一个 /t 多。/t 只是为了对齐所有内容,它可以是其他任何东西。 示例截图

所以,我需要一个“固定”填充:[结果]。我怎样才能在我的代码中正确地做到这一点?

谢谢!

代码:

        RegistryKey registryKeys = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");

        foreach (string registryKey in registryKeys.GetValueNames())
        {
            Console.WriteLine(registryKey + "\t\t: " + registryKeys.GetValue(registryKey));
        }
4

4 回答 4

11

使用 string.Format() 或只是 Console.Write() 因为它支持格式

const string format = "{0,-32} :{1}";

Console.WriteLine(format, "Key", "Value")

格式值 -32 表示键应该占据 32 个位置并左对齐。

于 2013-11-14T21:35:03.787 回答
8

例如,在标签上使用 .PadRight(30)。

https://docs.microsoft.com/en-us/dotnet/api/system.string.padright?view=netframework-4.8

于 2013-11-14T21:34:12.280 回答
1

试试这个:

var key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
RegistryKey registryKeys = 
    Registry.LocalMachine.OpenSubKey(key);
var maxLength = registryKeys.GetValueNames().Max(n => n.Length);
foreach (string registryKey in registryKeys.GetValueNames())
{
    Console.WriteLine("{0}:{1}", 
        registryKey.PadRight(maxLength), 
        registryKeys.GetValue(registryKey));
}
于 2013-11-14T21:38:43.373 回答
0

Console.WriteLine(registryKey.PadRight(20, ' ') + registryKeys.GetValue(registryKey));

http://msdn.microsoft.com/en-us/library/66f6d830(v=vs.110).aspx

于 2013-11-14T21:34:58.177 回答