解析字符串逻辑问题c#

时间:2013-11-05 15:46:28

标签: c# string dictionary

This is a follow on from this question

我的程序接收一个由两部分组成的字符串:分别是距离值和id号。我把它们分开并将它们存储在程序中的局部变量中。所有id号都存储在字典中,用于检查传入的距离值。虽然我应该注意,从设备发送到我程序的每个字符串都是在一个字符串上传递的。下次我的程序收到来自设备的信号时,它会覆盖以前的数据。

如果我的程序中的id键与我的词典中的一个匹配,那么应该更新我的词典键旁边的变量。但是,当我运行我的程序时,我没有得到6个不同的值,我只得到相同的值,它们都同时更新。

这是我写的所有代码都试图这样做:

    Dictionary<string, string> myDictonary = new Dictionary<string, string>();
string Value1 = "";
string Value2 = "";
string Value3 = "";
string Value4 = "";
string Value5 = "";
string Value6 = "";

void Start() 
{

    myDictonary.Add("11111111", Value1);
    myDictonary.Add("22222222", Value2);
    myDictonary.Add("33333333", Value3);
    myDictonary.Add("44444444", Value4);
    myDictonary.Add("55555555", Value5);
    myDictonary.Add("66666666", Value6);

}

private void AppendString(string message) 
{   
    testMessage = message;

    string[] messages = message.Split(',');

    foreach(string w in messages)
    {   
        if(!message.StartsWith(" "))
            outputContent.text +=  w + "\n";

    }

    messageCount = "RSSI number " + messages[0];
    uuidString = "UUID number " + messages[1];



    if(myDictonary.ContainsKey(messages[1]))
    {
        Value1 = messageCount;
        Value2 = messageCount;
        Value3 = messageCount;
        Value4 = messageCount;
        Value5 = messageCount;
        Value6 = messageCount;
    }
}

如何获取它以便当程序重新获得第一个键时,例如1111111,它只更新Value1?

通过的信息可能是动态的,因此我希望避免尽可能多地收集信息。

2 个答案:

答案 0 :(得分:6)

而不是

if(myDictonary.ContainsKey(messages[1]))
{
  Value1 = messageCount;
  Value2 = messageCount;
  Value3 = messageCount;
  Value4 = messageCount;
  Value5 = messageCount;
  Value6 = messageCount;
}

使用

if(myDictonary.ContainsKey(messages[1]))
{
  myDictonary[messages[1]] = messageCount;
}

这样,您只需使用键messages[1]更新字典条目,而不是全部更新。

答案 1 :(得分:3)

if(myDictonary.ContainsKey(messages[1]))
{
    Value1 = messageCount;
    Value2 = messageCount;
    Value3 = messageCount;
    Value4 = messageCount;
    Value5 = messageCount;
    Value6 = messageCount;
}

应该是

if(myDictonary.ContainsKey(messages[1]))
    {
        myDictionary[messages[1]] = messageCount;
    }