繁体   English   中英

从字符串数组中删除文本并检查特定字符串是否包含在字符串数组中?

[英]Remove texts from an array of strings and check if a specific string contains in the array of strings?

我正在尝试从 MySQL 获取数据到 Unity。 数据格式为ID:AZ22; ID:TR56;... ID:AZ22; ID:TR56;... 我能够获取数据。 但是,我想从数据字符串数组中删除文本ID: :,最后我想检查来自 Unity 的特定字符串是否包含在数据字符串数组中。 我正在尝试使用Contains()函数,但它似乎不起作用。 是否在第 5 个位置找到字符串对我来说无关紧要。 我只想让代码检查是否匹配。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class ReceiveData : MonoBehaviour
{
    public string checkForString = "AZ22";
    public string[] Items;
    IEnumerator Start()
    {
        WWW data = new WWW("http://localhost/GetID.php");
        yield return data;
        string dataString = data.text;

        Items = dataString.Split(';');

        if(checkForString.Contains(dataString))
        {
            Debug.Log("String Contains");
        }
        else
        {
            Debug.Log("String does not contain");
        }
    }


}

Items是形式的字符串数组

{
    "ID:AZ22",
    "ID:TR56",
    ...
}

方法

Items.Contains(checkForString)

检查数组Items包含字符串checkForString ,即比较每个项目是否等于checkForString 由于 items 中的字符串都包含"ID:"部分,所以没有一个字符串等于"AZ22" 您可以通过将条目与"ID:AZ22"进行比较来解决这个问题 - 如果您想在代码中保持 id 不变,这可以通过

Items.Contains($"ID:{checkForString}")

但是,您可以立即删除"ID:"

Items = dataString.Split(';')
                  .Select(s => s.Substring(3))
                  .ToArray();

当然,在这种情况下,您不必将"ID:"添加到Contains中。

编辑:用于处理无效输入

如果你得到错误

startIndex不能大于字符串的长度。

这意味着数组中的任何字符串都不具有"ID:XXXXX"形式。 在这种情况下,您可以在剥离前缀之前过滤项目

Items = dataString.Split(';')
                  .Where(IsValidId)
                  .Select(s => s.Substring(3))
                  .ToArray();

private bool IsValidId(string s)
{
    return s.StartsWith("ID:") && s.Length > 3;
}

问题也可能是,原始字符串以;结尾; . 在这种情况下, Split返回一个空字符串作为最后一项。 这可以通过使用StringSplitOptions来缓解

Items = dataString.Split(new[]{';'}, StringSplitOptions.RemoveEmptyEntries)
                  .Select(s => s.Substring(3))
                  .ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM