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

Shi*_*eek 0 c# arrays string split c#-4.0

我的代码是:

public void processData(string data)
{
       string com = data.Split(' ')[0];
       string[] val = data.Remove(0,com.Length).Split(' ');
}
Run Code Online (Sandbox Code Playgroud)

我想使用这段代码实现的是,当com存储data变量中的第一个单词时,val数组应该存储data变量的剩余单词。在第 4 行代码中,我通过首先删除从 0 索引到第一个单词长度的字符来实现这一点。这将删除第一个单词,然后根据空格将其拆分,然后将结果存储在数组中。问题是这不会发生。将com被存储的第一个字,但val正显示出总是空。请有人告诉我该怎么办?我可以使用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 
Run Code Online (Sandbox Code Playgroud)

左侧有字段,右侧有值。我想分开存放它们。

示例:字段是timesteps,值是1750

解决方案:

这是非常愚蠢的解决方案,但我刚刚重新启动了我的 Visual Studio,它运行良好。

感谢大家的好评。我 +1 所有答案并标记了 Blachshma 答案,因为重新启动或重新创建项目的建议来自他。

Bla*_*hma 5

使用 LINQ 的Skip()

string[] val = data.Split(' ').Skip(1).ToArray();
Run Code Online (Sandbox Code Playgroud)

要强调您的示例中的字符串:

string data = "timesteps 1750";
string com = data.Split(' ')[0]; // Returns timesteps
string[] val = data.Split(' ').Skip(1).ToArray(); // Returns 1750
Run Code Online (Sandbox Code Playgroud)

你的另一个例子:

string data = "durations 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24";
Run Code Online (Sandbox Code Playgroud)

com将有“持续时间”,val并将有一个 16 个元素的数组,每个元素的值为“24”