如何使用通配符在数组中搜索字符串? C#

How can I search strings inside an array using wild cards? C#

参数是一个字符串,每个单词都有一个数字。我需要在那个词中搜索号码。到目前为止,我的解决方案是将字符串拆分成一个字符串数组,然后使用 Array.IndexOf 找到我的搜索的匹配索引。但是我一直没能找到成功使用通配符的方法。使用 string.Contains 似乎有效,但使用 Array.IndexOf 搜索无效。

如何在字符串数组元素中搜索包含数字且 return 它是索引的单词? 1-9.

public static string Order(string words)
        {
            string[] wordArr = words.Split(' ');
            string[] wordsOrdered = new string[words.Length];
            int k;
            for (int i = 0, j = 1; i < wordsOrdered.Length; i++, j++)
            {
                if (words.Contains($"{j}"))
                {
                    k = Array.IndexOf(wordArr, $"{j}");
                    if (k != -1)
                        wordsOrdered[i] = wordArr[k];
                }
            }
            return words = wordsOrdered.ToString();
        }

寻找单词中是否存在数字的正则表达式似乎是最简单的解决方案

public static string Order(string words)
{
    string[] wordArr = words.Split(' ');
    string[] wordsOrdered = new string[wordArr.Length];

    Regex r = new Regex(@"\d+");
    for (int i = 0; i < wordArr.Length; i++)
    {
        var m = r.Match(wordArr[i]);
        if(m.Success)
        {
            int index = Convert.ToInt32(m.Value);
            wordsOrdered[index-1] = wordArr[i];
        }
    }
    return string.Join(" ", wordsOrdered);
}

这段代码假设你所有的单词在内部至少有一个数字,最小的数字从 1 开始。(0 将导致索引超出范围异常)而且你不应该有更大的数字比输入字数还要多。