简体   繁体   English

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

[英]Add values to array using “template”

I'm not sure if the title is describing exactly what I want to achieve. 我不确定标题是否恰好描述了我想要实现的目标。 Simply put: 简单的说:

If I have 6 inputs: 如果我有6个输入:

  1. Input1: String1 输入1:字符串1
  2. Input2: String1Count 输入2:String1Count

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

  1. Input5: String3 输入5:字符串3
  2. Input6: String3Count 输入6:String3Count

I want to add each string to array, by number of times specified by string's respective count. 我想通过字符串各自的计数指定的次数将每个字符串添加到数组。 When this is done and there are still fields in the array that are empty, to loop the values again and repeat it until the array is full. 完成此操作后,数组中仍然有空字段,请再次循环这些值并重复该操作,直到数组已满为止。

Something like this 像这样

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
}

I think at least one more for loop and some if statements are needed, but I can't figure it out. 我认为至少还有一个for loop和一些if语句是必需的,但我无法弄清楚。

First you can't assign a string to an int[] array. 首先,您不能将string分配给int[]数组。 You have to assing it to an string[] array. 您必须将其关联到string[]数组。 To solve your problem you can use the modulo % operator: 要解决您的问题,您可以使用模%运算符:

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 此处演示

May be something like: 可能是这样的:

        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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM