[英]Remove substring from a string, split the result and store it in an array
我的代码是:
public void processData(string data)
{
string com = data.Split(' ')[0];
string[] val = data.Remove(0,com.Length).Split(' ');
}
我想使用此代码实现的是,当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
左边有字段,右边有值。 我想分开存放它们。
示例:字段是timesteps
,值是1750
解:
这是一个非常愚蠢的解决方案,但我只是重新启动了Visual Studio,但效果很好。
谢谢大家的好评。 我为所有答案+1,并标记了Blachshma答案,因为重新启动或重新创建项目的建议来自他。
使用LINQ的Skip()
string[] val = data.Split(' ').Skip(1).ToArray();
要强调示例中的字符串:
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
将具有“ durations”,而val
将具有由16个元素组成的数组,每个元素的值为“ 24”
string[] val = data.Remove(0, data.IndexOf(' ') + 1).Split(' ');
我假设它的val
不会显示为null
但第一个单词为空,因为您已从字符串中删除了第一个单词的子字符串,但尚未删除分隔符(空格)。
所以这应该工作(如果您只想删除第一个单词):
string[] val = data.Split().Skip(1).ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.