C# 将字符串列表格式化为列时出现问题

C# 将字符串列表格式化为列时出现问题,c#,string,list,formatting,C#,String,List,Formatting,很抱歉,这让我很痛苦,但我在用c#将字符串列表格式化为列时遇到了问题。 我使用的是一个输入文件,例如; “aa bbb cccc DDD eeeeee FFFFF” 使用字符限制(换行)我需要像这样将单词隔开 输出:Wrap=20 aa bbb cccc ddddd eeeeee fffffff 目前,我可以得到每行的字数,但例如,如果一个字因为换行而无法容纳,我的程序会将它放在另一行上,但是我需要保持每行相同的字数,这样第一行将有4个字串,而其余的则有5个,因为它们有更小的字串

很抱歉,这让我很痛苦,但我在用c#将字符串列表格式化为列时遇到了问题。 我使用的是一个输入文件,例如; “aa bbb cccc DDD eeeeee FFFFF”

使用字符限制(换行)我需要像这样将单词隔开 输出:Wrap=20

aa    bbb    cccc
ddddd eeeeee fffffff
目前,我可以得到每行的字数,但例如,如果一个字因为换行而无法容纳,我的程序会将它放在另一行上,但是我需要保持每行相同的字数,这样第一行将有4个字串,而其余的则有5个,因为它们有更小的字串


提前感谢。

您可以通过循环数组中的每个第n项来计算每列的间距

例如,如果您知道每行的单词数,假设每行有3个单词,那么您可以从第一个元素开始,每第三个元素获取一个最长单词的第一列

所以你会有一个for循环:

int longestWord = 0;

for(int i = 0; i < arrayLength; i += wordsPerLine)
{
    if(array[i].Length > longestWord)
        longestWord = array[i].Length;
}
int longestWord=0;
for(int i=0;i最长单词)
longestWord=数组[i]。长度;
}

我不知道你会如何在每一个专栏中实现这一点,但这是一个想法?

我能想到的唯一方法是复杂的 您可以首先获取对字符串进行拆分的组数,然后获取每个组中的字符数。 当你有了它,你可以开始分组,当其中一个子组超过限制时,你就停止了

//creates groups and lengths arrays
string letters = aaa bbbb ccc dd eeeeeee ffffffffff gggggggggggggggg hh iiiiiiiiii;
string[] groups = letters.split(" ");
int[] lengths = new int[groups.length]
    for(int i = 0; i<groups.length, i++){
    lengths[i] = groups[i].length;
}
int numberofrows;
//starts doing groups: is one element is more that 20, then if 2 elements are more 
//than 20, 3 elements more than 20....
// when a sum is more than 20, then the last amount of groups was the one to use
for(int i = 0, i<groups.length<i++){
    for(int j = 1, j<=groups.length, j++)
        int sum = add(i, j) 
        if(sum > limit){
            numberofrows = j-1;
            return;
        }
    }
}

//this makes the addition of several elements of the array, next to the other
public int add(int index, id sums){
    int sum = lengths[index];
    for(int i = 0, i<=sums;i++){
        sum += lengths[index+i];
    }
    return sum;
}
//创建组和长度数组
字符串字母=aaa bbbb ccc dd EEEEEE FFFFFFFF GGGGGGGGGGGGGG hh IIIIIIII;
字符串[]组=字母。拆分(“”);
int[]长度=新int[groups.length]

对于(int i=0;如果列大小固定或不固定?不,列可以是任意大小,因为间距意味着要将它们排成一行,并且不会超过换行。只是行上的字符串数量必须相同。除了最后一行可以让Lesswould您详细说明每行的字符串限制?我想我理解您的意思,但我不确定是什么如果第一行有5个字符串,而下一行需要5个较大的字符串,则需要换行,但这违反了“每行字符串数相同”的规则。每行有一个字符换行(例如,21个字符,包括空格),每行必须包含相同数量的字符串(例如,每行3个字符串)除了最后一行。每个字符串都需要以列样式与上面的字符串对齐,希望这有助于清理它。