我试图声明一个大小为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个子串然后我想只取前三个并丢弃其余的。
提前感谢任何帮助人员。
答案 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;
}