使用“模板”将值添加到数组

时间:2019-05-07 17:16:25

标签: c# .net .net-4.6

我不确定标题是否恰好描述了我想要实现的目标。 简单地说:

如果我有6个输入:

  
      
  1. 输入1:字符串1
  2.   
  3. 输入2:String1Count
  4.   

  
      
  1. 输入3:字符串2
  2.   
  3. Input4:String2Count
  4.   

  
      
  1. Input5:String3
  2.   
  3. Input6:String3Count
  4.   

我想通过字符串各自的计数指定的次数将每个字符串添加到数组。完成此操作后,数组中仍然有空字段,请再次循环这些值并重复该操作,直到数组已满为止。

类似这样的东西

public string str1 = "First String";
public int String1Count = 4;

public string str2 = "Second String";
public int String2Count = 7;

public string str3 = "Third String";
public int String3Count = 5;

int[] arr1 = new int[100];


for (int i = 0; i < arr1.Length; i++)
{
  arr1[i] = str1;
  arr1[i+1] = str1;
  arr1[i+2] = str1;
  arr1[i+3] = str1;
  arr1[i+4] = str1;
  arr1[i+5] = str2;
  arr1[i+6] = str2;
  arr1[i+7] = str2;
  ...
  arr1[arr1.lenght] = str; //It may be str1, str2 or str3, whichever is next
}

我认为至少还需要一个for loop和一些if语句,但我无法弄清楚。

2 个答案:

答案 0 :(得分:1)

首先,您无法将string分配给int[]数组。您必须将其关联到string[]数组。要解决您的问题,您可以使用模%运算符:

string str1 = "First String";
int String1Count = 4;

string str2 = "Second String";
int String2Count = 7;

string str3 = "Third String";
int String3Count = 5;

string[] arr1 = new string[100];

int sum12 = String1Count + String2Count;
int sum123 = String1Count + String2Count + String3Count;

for (int i = 0; i < arr1.Length; i++)
{
    if (i % sum123 < String1Count)
        arr1[i] = str1;
    else if (i % sum123 < sum12)
        arr1[i] = str2;
    else if (i % sum123 < sum123)
        arr1[i] = str3;
}

DEMO HERE

答案 1 :(得分:0)

可能类似于:

        string str1 = "First String";
        int String1Count = 4;

        string str2 = "Second String";
        int String2Count = 7;

        string str3 = "Third String";
        int String3Count = 5;


        var resultList = new List<String>();
        resultList.AddRange(Enumerable.Repeat(str1, String1Count));
        resultList.AddRange(Enumerable.Repeat(str2, String2Count));
        resultList.AddRange(Enumerable.Repeat(str3, String3Count));

        string[] resultArray = resultList.ToArray();