C# 4.0 如果小于初始值,则动态填充数组

C# 4.0 如果小于初始值,则动态填充数组,c#-4.0,C# 4.0,下面是我目前正在做的示例代码 string stringWithDelimiters = "Hello%there%people%of%the%world"; string[] vals = new string[30]; vals = stringWithDelimiters.Split('%'); 根据上述代码,VAL的长度将为6。但是,有没有一种方法可以通过将其他变量的值设置为空字符串来“强制”数组使用全部30,即使它小于30?stringWithDelimiters.Split(“%”

下面是我目前正在做的示例代码

string stringWithDelimiters = "Hello%there%people%of%the%world";
string[] vals = new string[30];
vals = stringWithDelimiters.Split('%');

根据上述代码,
VAL
的长度将为6。但是,有没有一种方法可以通过将其他变量的值设置为空字符串来“强制”数组使用全部30,即使它小于30?

stringWithDelimiters.Split(“%”)
返回一个数组。如果您直接在
vals
中分配它,它将替换您刚才创建的整个数组

为了保留数组,必须将
Split
方法返回的数组中的每个值插入
vals
数组

尝试:

stringstringwithdelimiters=“Hello%there%people%of%the%world”;
字符串[]VAL=新字符串[30];
对于(int i=0;i
我刚刚找到了解决这个问题的最快方法。(我将使用@X.L.Ant的解决方案)

tmp.CopyTo(VAL,0)


谢谢大家!我会给他的答案加一个

这样,数组VAL将始终有30个元素。首先用30个空字符串填充数组,然后用拆分的数据填充数组。我希望这对你有帮助

        string stringWithDelimiters = "Hello%there%people%of%the%world";
        string[] vals = new string[30];
        string[] vals1 = new string[30];
        vals1 = stringWithDelimiters.Split('%');
        int valslength = vals1.Length;
        for (int k = 0; k < 30; k++)
        {
            vals[k] = "";
        }
        for (int m = 0; m < valslength; m++)
        {
            vals[m] = vals1[m];
        }
stringstringwithdelimiters=“Hello%there%people%of%the%world”;
字符串[]VAL=新字符串[30];
字符串[]vals1=新字符串[30];
vals1=stringWithDelimiters.Split('%');
int valslength=vals1.长度;
对于(int k=0;k<30;k++)
{
VAL[k]=“”;
}
对于(int m=0;m
数组。复制通常是将元素从一个数组移动到另一个数组的最快方法。此解决方案将拆分数组复制到长度为30的数组,然后用空字符串填充其余数组(如果有)。还考虑到拆分数组长度可能超过30(或任何长度)

私有静态字符串[]GetFixedLengthSplitArray(字符串输入)
{
const int TargetLength=30;
字符串[]splitResult=input.Split('%');
字符串[]值=新字符串[TargetLength];
Copy(splitResult,0,value,0,Math.Min(splitResult.Length,values.Length));
for(int i=splitResult.Length;i
你说得对。如前所述,它仍将在内部执行循环,但更清晰。我没想到这个方法。你一定累了吧
        string stringWithDelimiters = "Hello%there%people%of%the%world";
        string[] vals = new string[30];
        string[] vals1 = new string[30];
        vals1 = stringWithDelimiters.Split('%');
        int valslength = vals1.Length;
        for (int k = 0; k < 30; k++)
        {
            vals[k] = "";
        }
        for (int m = 0; m < valslength; m++)
        {
            vals[m] = vals1[m];
        }
private static string[] GetFixedLengthSplitArray(string input)
{
    const int TargetLength = 30;

    string[] splitResult = input.Split('%');
    string[] values = new string[TargetLength];

    Array.Copy(splitResult, 0, values, 0, Math.Min(splitResult.Length, values.Length));

    for (int i = splitResult.Length; i < values.Length; i++)
    {
        values[i] = string.Empty;
    }
    return values;
}