使用String Split Method时设置数组的大小

时间:2016-02-11 21:49:37

标签: c# arrays string split

我试图声明一个大小为3的数组,然后使用字符串split()方法为数组的每个索引赋值。但是,Split()方法似乎会覆盖数组的大小,并将其大小设置为Split()方法出现的子字符串数量。

所以这就是我做的,

string myString = "Hello world";
string[] myArray = new string[3];

for(int i = 0; i < 3; i++)
    myArray[i] = "";

myArray = myString.Split(' ');

但是再一次,当我使用Split()方法时,它会覆盖我的数组的大小并将其设置为2,这会在以后引起并发症。

所以我需要知道如何使用split方法将字符串添加到大小为3的数组中。如果数组包含少于3个项目,我想将未分配的索引设置为"",如果有的话超过3个子串然后我想只取前三个并丢弃其余的。

提前感谢任何帮助人员。

3 个答案:

答案 0 :(得分:3)

您可以将字符串拆分的结果设置为新数组,将内容传输到循环中的原始数组。如果字符串拆分数组比原始数组长,则应将原始数组设置为新数组,以避免超出范围异常。

var splitArray = myString.Split(' ');
if(splitArray.Length >= myArray.Length)
{
    myArray = splitArray;
}
else
{
    for(int i = 0; i < splitArray.Length; i++)
        myArray[i] = splitArray[i];
}

答案 1 :(得分:2)

只需要一点re-jig(更新以应对myArray小于mySplitString的情况):

View

答案 2 :(得分:0)

这是另一个想法;我在这里使用了一个名为ConsistantSplit的扩展方法。因此,您可以将字符串拆分为一致的大小数组。

    private static void Main()
    {
        string myString = "Hello world";
        var mySplitedString = myString.ConsistantSplit(' ', 5);
        Console.WriteLine(mySplitedString.Length);
        Console.ReadLine();
    }

    private static string[] ConsistantSplit(this string text, char splitter, int size)
    {
        string[] consistantSplitter = new string[size];
        var splitted = text.Split(splitter);
        if (size < splitted.Length)
            return splitted.Take(size).ToArray();
        splitted.CopyTo(consistantSplitter, 0);
            return consistantSplitter;
    }