使用字符串拆分方法时设置数组的大小
本文关键字:数组 设置 字符串 拆分 方法 | 更新日期: 2023-09-27 18:34:19
我正在尝试声明一个大小为 3 的数组,然后使用 string 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 个,那么我只想取前三个并丢弃其余的。
提前感谢任何帮助。
您可以将字符串拆分的结果设置为新数组,从而循环将内容传输到原始数组。如果字符串拆分数组比原始数组长,则应将原始数组设置为新数组,以避免越界异常。
var splitArray = myString.Split(' ');
if(splitArray.Length >= myArray.Length)
{
myArray = splitArray;
}
else
{
for(int i = 0; i < splitArray.Length; i++)
myArray[i] = splitArray[i];
}
只需要一点点重新夹具(更新以应对 myArray 小于 mySplitString 的情况):
string myString = "Hello world";
string[] mySplitString = myString.Split(' ');
string[] myArray = new string[3];
var loopLength = Math.min(mySplitString.length,myArray.length);
for(int i = 0; i < loopLength; i++){
myArray[i] = mySplitString[i];
}
这是另一个想法;我在这里使用了一个名为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;
}