【发布时间】:2013-04-06 14:04:55
【问题描述】:
我的代码是:
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 答案,因为重启或重新创建项目的建议来自他。
【问题讨论】:
-
应该可以。你能显示以下代码行吗? “显示为空”是什么意思,在哪里?
-
之后没有代码行。所有需要的代码都是这样的。调用它的代码完美地将字符串值传递给它。
-
如果您担心性能问题,调用字符串拆分并不是非常有效。为什么你现在担心优化这一步呢?你没有提供这方面的背景......似乎过早的优化。
-
@SMT 看到我编辑的问题。实际上有这种类型的数据包含一些字段和值。我的任务是编译并将它们存储在内存中。数据是无序的。这意味着一个字段没有预定义的值。
标签: c# arrays string c#-4.0 split