Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对照从其他设备读入的字符串检查列表中的字符串_C#_List_Unity3d - Fatal编程技术网

C# 对照从其他设备读入的字符串检查列表中的字符串

C# 对照从其他设备读入的字符串检查列表中的字符串,c#,list,unity3d,C#,List,Unity3d,我有一个列表,其中包含我已经设置的数据,如下所示: public List<string> stringValues = new List<string>(); void Start() { stringValues.Add( "D5B51D14-9ED8-1530-5455-CFF2C4B86151"); stringValues.Add( "335B8649-AB22-E146-05A0-E9A4F3813A1F"); string

我有一个列表,其中包含我已经设置的数据,如下所示:

public List<string> stringValues = new List<string>();


void Start() 
{   
    stringValues.Add( "D5B51D14-9ED8-1530-5455-CFF2C4B86151");
    stringValues.Add( "335B8649-AB22-E146-05A0-E9A4F3813A1F");
    stringValues.Add( "28797BB5-9020-C0B5-F0CE-72AB7F1830E2");
    stringValues.Add( "CD377141-422D-E8B0-B845-A0AF408E565A");
    stringValues.Add( "DEEE65FB-FF1F-A6A9-4C3C-5784F41B0D39");
    stringValues.Add( "70489FFA-6C88-A40D-C615-FD1EDEBD7643");

}
问题是,发送到我的程序中的数据是我不知道的。它可以包含任何东西。我需要我的程序做的是检查我需要的字符串部分,并将它找到的值与列表中的值进行比较。然后,如果列表中包含相同的数据,请采取措施

如何将列表与使用上述代码动态传递到列表中的数据进行比较

编辑

我将进一步解释appendMessage函数,以及为什么它是这样的:

Im读入的设备以以下方式发送数据:

<CBPeripheral: 0xda4bab0 identifier = D5B51D14-9ED8-1530-5455-CFF2C4B86151, Name = "estimote", state = connecting>

然而,虽然显示的字符串是我想要的行的一部分,但什么也没有发生,我仍在试图找出原因。

您可以使用该方法搜索列表。比如说:

if(stringValues.Contains(outputContent.text))
{
    Instantiate(estimote6Model, new Vector3(2.5f,0.7f,0), Quaternion.identity);
    uuidString = "got an estimote 6";
}
if (stringValues.Contains(message))
{
   // do something
}
您可以在
AppendString()
方法的末尾添加这个被剪断的,因为在那里,变量
message
应该包含id,它可能是
stringValues
列表的一部分,对吗

如果不想在
AppendString()
方法中检查此项,则必须将设备的id存储在单独的列表中:

public List<string> deviceValues = new List<string>();

private void AppendString(string message) 
{
    int startIndex = 38;
    int endIndex = 36;
    message = message.Substring(startIndex,endIndex);
    messageCount = "length is " + message.Length.ToString();
    outputContent.text += "\n" + message;

    deviceValues.Add(message); // add here the input from the device
}

开始索引不能大于结束索引。你想比较最后4个字符吗?不,我得到的整个字符串实际上是:我只想检查标识符编号,在上面的例子中是D5B5,等等,从38开始。然后我希望它只检查36个字符长的数字的长度。在
outputContent.text
中存储
“\n”+消息
。这意味着有一个“\n”和您搜索的邮件,但这不匹配。如果在您的代码中,这个
应该在哪里?如果这应该在方法
AppendString()
中,那么应该使用
消息
而不是
outputContent.text
。如果没有,您应该在单独的列表中添加
message
的值。但您不能做的是检查
outputContext.text
中的值,只要其中有
\n
public List<string> deviceValues = new List<string>();

private void AppendString(string message) 
{
    int startIndex = 38;
    int endIndex = 36;
    message = message.Substring(startIndex,endIndex);
    messageCount = "length is " + message.Length.ToString();
    outputContent.text += "\n" + message;

    deviceValues.Add(message); // add here the input from the device
}
if (stringValues.Any(x => deviceValues.Contains(x)))
{
   // do something
}