C# 从字符串中删除子字符串,拆分结果并将其存储在数组中

C# 从字符串中删除子字符串,拆分结果并将其存储在数组中,c#,arrays,string,c#-4.0,split,C#,Arrays,String,C# 4.0,Split,我的代码是: public void processData(string data) { string com = data.Split(' ')[0]; string[] val = data.Remove(0,com.Length).Split(' '); } 我想使用这段代码实现的是,当com存储数据变量的第一个字时,val数组应该存储数据变量的剩余字。在代码的第4行中,我首先将字符从0索引中删除到第一个单词的长度,从而实现了这一点。这将删除第一个单词,然后

我的代码是:

public void processData(string data)
{
       string com = data.Split(' ')[0];
       string[] val = data.Remove(0,com.Length).Split(' ');
}
我想使用这段代码实现的是,当com存储数据变量的第一个字时,val数组应该存储数据变量的剩余字。在代码的第4行中,我首先将字符从0索引中删除到第一个单词的长度,从而实现了这一点。这将删除第一个单词,然后根据空格将其拆分,然后将结果存储在数组中。问题是,这种情况不会发生。com正在存储第一个字,但val始终显示为null。请有人告诉我该怎么办?我可以使用foreach循环或其他技术来实现这一点。但由于性能问题,我不需要太多代码

我的示例字符串如下所示:

begin main
timesteps 1750
weeks 250
campaigns 6
scenario 10
epsilon 0.01
powerplant1 11
powerplant2 10
constraint13 46
constraint14 7
constraint15 0
constraint16 1
constraint17 3
constraint18 0
constraint19 1
constraint20 1
constraint21 1
durations 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 
左边是字段,右边是值。我想把它们分开存放

示例:字段为timesteps,值为1750

解决方案:

这是一个相当愚蠢的解决方案,但我刚刚重新启动了我的VisualStudio,它工作得很好

谢谢大家的热情回应。I+1所有答案和标记的Blachshma答案,因为重新启动或重新创建项目的建议来自他。

使用LINQ的答案

要使用示例中的字符串强调,请执行以下操作:

string data = "timesteps 1750";
string com = data.Split(' ')[0]; // Returns timesteps
string[] val = data.Split(' ').Skip(1).ToArray(); // Returns 1750
你的另一个例子是:

string data = "durations 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24";
com将有持续时间,val将有一个16个元素的数组,每个元素的值为24。我假设它val不显示null,但第一个字是空的,因为您已从字符串中删除了第一个字的子字符串,但未删除分隔符空格

string[] val = data.Remove(0, data.IndexOf(' ') + 1).Split(' ');
因此,如果您只想删除第一个单词,这应该可以工作:

string[] val = data.Split().Skip(1).ToArray();

这应该行得通。您能显示以下代码行吗?什么意思是显示null,在哪里?之后没有代码行。所有必需的代码如下所示。调用此函数的代码完美地将字符串值传递给它。如果您担心性能问题,那么调用字符串拆分的效率并不高。但是,为什么您现在担心优化此步骤?你没有提供这方面的背景资料。。。似乎是过早的优化。@SMT看我的问题,我编辑了它。实际上,这种类型的数据包含一些字段和值。我的任务是编译并存储在内存中。数据是无序的。这意味着没有一个预定义的值来表示一个字段将有多少个值。调用此函数后,您说val为null???数据变量中的字符串是什么?我知道我们的两个代码都是正确的。但我不知道他们为什么不工作?好吧,这个怎么样-创建一个新的Visual Studio项目。只需添加此代码。。。检查它现在是否工作-无论问题是什么,首先检查它是否可能是现有代码中其他地方的问题。
string[] val = data.Split().Skip(1).ToArray();