0

私はすでに次のように設定したデータでファイルされたリストを持っています:

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");

}

また、デバイスから送信されるデータを読み取り、画面に表示するメソッドもあります。必要なデータのみを取得して画面に表示するために、文字列からチョップビットを切り取る必要がありました。

メソッドは次のようになります。

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;
}

問題は、私のプログラムに送信されるデータは、私にはわからないことです。それは何でも含むことができます。プログラムに必要なのは、必要な文字列の部分をチェックし、見つかった値をリスト内の値と比較することです。次に、リストに同じデータが含まれている場合は、何かを行います。

上記のコードでリストに動的に渡されるデータとリストを比較するにはどうすればよいですか?

編集

appendMessage 関数とその理由をもう少し説明します。

デバイスは、次の方法でデータを送信します。

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

そのほとんどは問題ありませんが、私が気にかけているのは、行の識別子部分に保持されている長い数字だけです。私のプログラムでは、アプリを実行すると、その行全体を表示するのではなく、その番号だけが出力されます。他には何もありません。

したがって、その行を切り刻んだので、呼び出された UILabel (unity gui 文字列) に格納し、outputContent呼び出し時に保持されているデータにアクセスしています。outputContent.text

以下に示すサンプルの回答と組み合わせると、リストチェックは次のようになります。

if(stringValues.Contains(outputContent.text))
{
    Instantiate(estimote6Model, new Vector3(2.5f,0.7f,0), Quaternion.identity);
    uuidString = "got an estimote 6";
}

ただし、表示されている文字列は必要な行の一部ですが、何も起こらず、まだ理由を解明しようとしています.

4

1 に答える 1

1

メソッド.Contains()でリストを検索できます。だから、このようなもの:

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
}

次に、次stringValuesの値のいずれかが含まれているかどうかを確認できますdeviceValues

if (stringValues.Any(x => deviceValues.Contains(x)))
{
   // do something
}
于 2013-11-03T16:39:57.807 に答える