搜索并替换子数组

时间:2012-08-03 12:46:15

标签: .net vb.net arrays replace

我需要执行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

这是阵列的图片

integer array

如何执行search and replace工作?

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

2 个答案:

答案 0 :(得分:3)

myArray是整数数组

解决方案

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

说明

  • 第1步:将int数组转换为字符串(使用';'作为分隔符)
  • 步骤2:将部分字符串(“2; 0; 0; 0; 1”)替换为另一个值(“5; 5; 5; 5; 5”)
  • 第3步:将字符串转换回数组

    Split(';').Select(n => Convert.ToInt32(n)).ToArray() 
    

答案 1 :(得分: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();
    }