替换数组中指定位置的值?

时间:2021-06-17 14:49:02
程序中有一数组
如:

2,3,5,3,2,5

比如我要将第二个3替换成7怎么弄呢?

因为数组里面可能有多个重复的值。现在得到了数组的位置。不知道怎么替换指定位置的值

13 个解决方案

#1


		int[] values = { 2, 3, 5, 3, 2, 5 };
int counter = 0;
for (int i = 0; i < values.Length; i++)
{
if (values[i] == 3)
counter++;
if (counter == 2)
{
values[i] = 7;
break;
}
}
foreach (int value in values)
Response.Write(value + " ");

#2


引用 1 楼  的回复:
C# code
        int[] values = { 2, 3, 5, 3, 2, 5 };
        int counter = 0;
        for (int i = 0; i < values.Length; i++)
        {
            if (values[i] == 3)
                counter++;……


现在只是假设是替换第二个3成7

如果是更多。而且不知道数组中的具体内容呢

数组内容是变的。而要替换的位置也是会变的

#3



        private void SetArr(int[] arr, int i)
        {
            arr = new int[] { 2, 3, 5, 3, 2, 5 };
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Reverse().First();
            arr[v.index] = 6;
        }

        private void button10_Click(object sender, EventArgs e)
        {

            int[] arr = new int[] { 2, 3, 5, 3, 2, 5 };
            SetArr(arr, 2);
        }

#4


改一下

//arr数组,i索引,n要改成的值
        private void SetArr(int[] arr, int i,int n)
        {
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Reverse().First();
            arr[v.index] = n;
        }

        private void button10_Click(object sender, EventArgs e)
        {

            int[] arr = new int[] { 2, 3, 5, 3, 2, 5 };
            SetArr(arr, 2,6);
        }

#5


我现在能得到旧的数组内容,要替换的位置,和要替换的内容

比如:
string oldarr="1,2,3,4,5,5,6,7,4,3...."//旧的数组。
int arrnum=3;//得到替换的位置。这个是通过URL传值过来的
string newstr="5";//这个是要替换的新内容

我要得到替换后的新的数组内容

按上面的来说的话。结果就是
string newarr="1,2,3,5...."这样了

#6


引用 4 楼  的回复:
改一下

C# code

//arr数组,i索引,n要改成的值
        private void SetArr(int[] arr, int i,int n)
        {
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Revers……


出错哦

#7


忘了说。我是用的VS2005

#8


 
private int[] RepalceArray(int[] values, int pos, int oldvalue, int newvalue)
            {
                values[values.Select((a, i) => new { i, a }).Where(a => a.a.Equals(oldvalue)).Take(pos).Reverse().FirstOrDefault().i] = newvalue;
                return values;
            }




int[] values = { 2, 3, 5, 3, 2, 5,3 };
values = RepalceArray(values,2,3,7);//将第二个3改成7

#9


我怎么运行你们的方法都是错误的呢。运行不了哦。是不是版本问题。我的是2005.

#10


		string oldarr = "1,2,3,4,5,5,6,7,4,3";
int arrnum = 3;
string newstr = "5";
string[] parts = oldarr.Split(',');
parts[arrnum] = newstr;
string r = string.Join(",", parts);
Response.Write(r);

#11


注意:Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。

#12


2005没有LINQ,你还是搞个变量,记录一下3的位置,符合你要的位置就修改此位置的值

#13


好的。谢谢两位耐心解答。分不多。见谅·

#1


		int[] values = { 2, 3, 5, 3, 2, 5 };
int counter = 0;
for (int i = 0; i < values.Length; i++)
{
if (values[i] == 3)
counter++;
if (counter == 2)
{
values[i] = 7;
break;
}
}
foreach (int value in values)
Response.Write(value + " ");

#2


引用 1 楼  的回复:
C# code
        int[] values = { 2, 3, 5, 3, 2, 5 };
        int counter = 0;
        for (int i = 0; i < values.Length; i++)
        {
            if (values[i] == 3)
                counter++;……


现在只是假设是替换第二个3成7

如果是更多。而且不知道数组中的具体内容呢

数组内容是变的。而要替换的位置也是会变的

#3



        private void SetArr(int[] arr, int i)
        {
            arr = new int[] { 2, 3, 5, 3, 2, 5 };
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Reverse().First();
            arr[v.index] = 6;
        }

        private void button10_Click(object sender, EventArgs e)
        {

            int[] arr = new int[] { 2, 3, 5, 3, 2, 5 };
            SetArr(arr, 2);
        }

#4


改一下

//arr数组,i索引,n要改成的值
        private void SetArr(int[] arr, int i,int n)
        {
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Reverse().First();
            arr[v.index] = n;
        }

        private void button10_Click(object sender, EventArgs e)
        {

            int[] arr = new int[] { 2, 3, 5, 3, 2, 5 };
            SetArr(arr, 2,6);
        }

#5


我现在能得到旧的数组内容,要替换的位置,和要替换的内容

比如:
string oldarr="1,2,3,4,5,5,6,7,4,3...."//旧的数组。
int arrnum=3;//得到替换的位置。这个是通过URL传值过来的
string newstr="5";//这个是要替换的新内容

我要得到替换后的新的数组内容

按上面的来说的话。结果就是
string newarr="1,2,3,5...."这样了

#6


引用 4 楼  的回复:
改一下

C# code

//arr数组,i索引,n要改成的值
        private void SetArr(int[] arr, int i,int n)
        {
            var v = arr.Select((m, index) => new { index, m }).Where(x => x.m == 3).Take(2).Revers……


出错哦

#7


忘了说。我是用的VS2005

#8


 
private int[] RepalceArray(int[] values, int pos, int oldvalue, int newvalue)
            {
                values[values.Select((a, i) => new { i, a }).Where(a => a.a.Equals(oldvalue)).Take(pos).Reverse().FirstOrDefault().i] = newvalue;
                return values;
            }




int[] values = { 2, 3, 5, 3, 2, 5,3 };
values = RepalceArray(values,2,3,7);//将第二个3改成7

#9


我怎么运行你们的方法都是错误的呢。运行不了哦。是不是版本问题。我的是2005.

#10


		string oldarr = "1,2,3,4,5,5,6,7,4,3";
int arrnum = 3;
string newstr = "5";
string[] parts = oldarr.Split(',');
parts[arrnum] = newstr;
string r = string.Join(",", parts);
Response.Write(r);

#11


注意:Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。

#12


2005没有LINQ,你还是搞个变量,记录一下3的位置,符合你要的位置就修改此位置的值

#13


好的。谢谢两位耐心解答。分不多。见谅·