首页 > 解决方案 > c#如何将二维数组列与字符串对齐

问题描述

我的问题是如何对齐单词将在另一个下方的列。我做了一些简单的翻译,我希望它们保持一致。我设法通过使用来对齐它们,\t但我认为可能还有其他方法。这是我的代码:

string[,] slownik = new string[10, 3];

slownik[0, 0] = "Klucz";
slownik[1, 0] = "Biurko";
slownik[2, 0] = "Drzewo";
slownik[3, 0] = "Liść";
slownik[4, 0] = "Łóżko";
slownik[5, 0] = "Ładowarka";
slownik[6, 0] = "Plecak";
slownik[7, 0] = "Głośnik";
slownik[8, 0] = "Szkoła";
slownik[9, 0] = "Zadanie Domowe";
slownik[0, 1] = "\t\t Schlüssel";
slownik[1, 1] = "\t Schreibtisch";
slownik[2, 1] = "\t Baum";
slownik[3, 1] = "\t\t Wedel";
slownik[4, 1] = "\t\t Bett";
slownik[5, 1] = "\t Ladegerät";
slownik[6, 1] = "\t Rucksack";
slownik[7, 1] = "\t Lautsprecher";
slownik[8, 1] = "\t Schule";
slownik[9, 1] = "Hausaufgabe";
slownik[0, 2] = "\t Key";
slownik[1, 2] = "\t Desk";
slownik[2, 2] = "\t\t Tree";
slownik[3, 2] = "\t Leaf";
slownik[4, 2] = "\t\t Bed";
slownik[5, 2] = "\t Charger";
slownik[6, 2] = "\t Backpack";
slownik[7, 2] = "\t Speaker";
slownik[8, 2] = "\t School";
slownik[9, 2] = "\t Homework";

for (int i=0; i<10; i++) { //Console.Write(" ");
                Console.WriteLine(slownik[i, 0] + " \t " + slownik[i, 1] + " \t " + slownik[i, 2]);
            }

标签: c#arrays

解决方案


我会\t从你的数组元素中删除并只保留名称。然后,您可以根据每列中最长的字符串计算填充值,或者只是硬编码填充值以将列隔开。

就像是:

using System;

public class Program
{
    public static void Main()
    {
        string[, ] slownik = new string[10, 3];
        slownik[0, 0] = "Klucz";
        slownik[1, 0] = "Biurko";
        slownik[2, 0] = "Drzewo";
        slownik[3, 0] = "Liść";
        slownik[4, 0] = "Łóżko";
        slownik[5, 0] = "Ładowarka";
        slownik[6, 0] = "Plecak";
        slownik[7, 0] = "Głośnik";
        slownik[8, 0] = "Szkoła";
        slownik[9, 0] = "Zadanie Domowe";
        slownik[0, 1] = "Schlüssel";
        slownik[1, 1] = "Schreibtisch";
        slownik[2, 1] = "Baum";
        slownik[3, 1] = "Wedel";
        slownik[4, 1] = "Bett";
        slownik[5, 1] = "Ladegerät";
        slownik[6, 1] = "Rucksack";
        slownik[7, 1] = "Lautsprecher";
        slownik[8, 1] = "Schule";
        slownik[9, 1] = "Hausaufgabe";
        slownik[0, 2] = "Key";
        slownik[1, 2] = "Desk";
        slownik[2, 2] = "Tree";
        slownik[3, 2] = "Leaf";
        slownik[4, 2] = "Bed";
        slownik[5, 2] = "Charger";
        slownik[6, 2] = "Backpack";
        slownik[7, 2] = "Speaker";
        slownik[8, 2] = "School";
        slownik[9, 2] = "Homework";


        for (int i = 0; i <= slownik.GetUpperBound(0); i++)
        { 
            Console.WriteLine(slownik[i, 0].ToString().PadRight(25) + slownik[i, 1].ToString().PadRight(25) + slownik[i, 2]);
        }
    }
}

结果

Klucz                    Schlüssel                Key
Biurko                   Schreibtisch             Desk
Drzewo                   Baum                     Tree
Liść                     Wedel                    Leaf
Łóżko                    Bett                     Bed
Ładowarka                Ladegerät                Charger
Plecak                   Rucksack                 Backpack
Głośnik                  Lautsprecher             Speaker
Szkoła                   Schule                   School
Zadanie Domowe           Hausaufgabe              Homework

小提琴演示

如果要计算填充,可以尝试类似

// Column 1 padding
int colPad1 = 0;
for (int i = 0; i <= slownik.GetUpperBound(0); i++) 
{
    if (slownik[i, 0].ToString().Length > colPad1)
    {
        colPad1 = slownik[i, 0].ToString().Length;
    }
}

// Column 2 padding
int colPad2 = 0; 
for (int i = 0; i <= slownik.GetUpperBound(0); i++) 
{
    if (slownik[i, 1].ToString().Length > colPad2)
    {
        colPad2 = slownik[i, 1].ToString().Length;
    }
}

然后使用这些填充值,例如:

for (int i = 0; i <= slownik.GetUpperBound(0); i++)
{ 
    Console.WriteLine(slownik[i, 0].ToString().PadRight(colPad1+5) + slownik[i, 1].ToString().PadRight(colPad2+5) + slownik[i, 2]);
}

推荐阅读