0

我需要执行Search and Replace一个子数组。这是我的代码

Dim IntegerArray() As Int32 = {1, 0, 2, 0, 0, 0,
                               1, 0, 2, 0, 0, 0, 
                               1, 0, 2, 0, 0, 0, 
                               0, 0, 0, 0}

具体来说,我需要2, 0, 0, 0, 1在数组中搜索元素并将每个元素替换为 5

这是数组的图片

整数数组

如何执行search and replace工作?

注意:我尝试遍历数组,但要识别 5 个元素值非常棘手,到目前为止我仍然无法使其工作。是否有任何 .NET 内置函数可以完成这项工作或任何智能解决方案?

4

2 回答 2

3

myArray 是整数数组

解决方案

String.Join(";", myArray).Replace("2;0;0;0;1", "5;5;5;5;5").Split(';').Select(n => Convert.ToInt32(n)).ToArray()

解释

  • 第 1 步:将整数数组转换为字符串(以 ';' 作为分隔符)
  • 第 2 步:将部分字符串 ("2;0;0;0;1") 替换为另一个值 ("5;5;5;5;5")
  • 第 3 步:将字符串转换回数组

    Split(';').Select(n => Convert.ToInt32(n)).ToArray() 
    
于 2012-08-03T12:59:41.037 回答
2
    internal int[] Solve(int[] input, int[] pattern, int[] replace)
    {
        var result = new List<int>();

        for (int i = 0; i < input.Length; i++)
        {
            bool match = true;

            for (int j = 0; j < pattern.Length; j++)
            {
                if ((i + j >= input.Length) || (input[i + j] != pattern[j]))
                {
                    match = false;
                    break;
                }
            }

            if (match)
            {
                foreach (var item in replace)
                {
                    result.Add(item);
                }

                i += (pattern.Length - 1);
            }
            else
            {
                result.Add(input[i]);
            }
        }

        return result.ToArray();
    }
于 2012-08-03T13:43:37.783 回答