字符串数组去重 比较

时间:2021-10-25 10:46:00
有一个字符串 string a="123,123,12,124,125,124,"

怎么去掉重复的123和124然后重新得到一个字符串:string b="123,12,124,125,"


帮忙了 用 C#就好。

17 个解决方案

#1


,对了。我知道在VB.net 中有 instr(a,b) 这样可以去重。那么C#中呢。

#2


string.Join(',', a.Split(',').Distinct().ToArray());

#3


以逗号split,然后循环添加到List,天津前判断是否已经存在

#4




        string a = "123,123,12,124,125,124,";

        string[] result = a.Split(',').Distinct().ToArray();

        string b = string.Join(",", result);

//结果b等于:123,12,124,125,

#5


            string str="123,123,12,124,125,124,";
            Regex reg = new Regex(@"((\d+,).*?)\2");
            while (str != (str = reg.Replace(str, "$1"))) ;
            Console.WriteLine(str);

#6


哇。大家的方法贼多哦。

VB 的instr 是判断的。也不是去重的,刚才试过了。 - -~!
那 么  VB中的方法是什么呢?

#7


引用 5 楼 huangwenquan123 的回复:
C# code

            string str="123,123,12,124,125,124,";
            Regex reg = new Regex(@"((\d+,).*?)\2");
            while (str != (str = reg.Replace(str, "$1"))) ;
            Console.Wri……


 while (str != (str = reg.Replace(str, "$1"))) ;
这是个什么循环?

#8


引用 7 楼 liouse 的回复:
引用 5 楼 huangwenquan123 的回复:
C# code
while (str != (str = reg.Replace(str, "$1"))) ;
这是个什么循环?

相当于
            while (true)
            {
                string temp = str;
                str = reg.Replace(str, "$1");
                if (temp == str)
                {
                    break;
                }
            }

#9




引用 2 楼 effun 的回复:
string.Join(',', a.Split(',').Distinct().ToArray());

#10


牛啊,正则表达式都出来了

#11


string a = "123,123,12,124,125,124,";
            string[] str = a.Split(',');

            IEnumerable<string> ling = (from b in str select b).Distinct();
            StringBuilder strbuil = new StringBuilder(100);
            foreach (string s in ling)
            {
                strbuil.Append(s);
            }

#12


8楼的是最有效和最方便的,楼主可以采用

#13


牛!!
引用 11 楼 hao448609471 的回复:
string a = "123,123,12,124,125,124,";
  string[] str = a.Split(',');

  IEnumerable<string> ling = (from b in str select b).Distinct();
  StringBuilder strbuil = new StringBuilder(100);
  foreach……

#14



string mc = Regex.Replace(str, @"(\d*?,)\1(\d*?,)((\d*?,)(\d*,))\4", "$1$2$3");

#15



string mc = Regex.Replace(str, @"(\d*?,)\1(\d*?,)((\d*?,)(\d*,))\4", "$1$2$3");
//结果:
/*
123,12,124,125,
*/


#16


喜欢二楼的。

#17


再顶!

引用 9 楼  的回复:

引用 2 楼 effun 的回复:
string.Join(',', a.Split(',').Distinct().ToArray());

#1


,对了。我知道在VB.net 中有 instr(a,b) 这样可以去重。那么C#中呢。

#2


string.Join(',', a.Split(',').Distinct().ToArray());

#3


以逗号split,然后循环添加到List,天津前判断是否已经存在

#4




        string a = "123,123,12,124,125,124,";

        string[] result = a.Split(',').Distinct().ToArray();

        string b = string.Join(",", result);

//结果b等于:123,12,124,125,

#5


            string str="123,123,12,124,125,124,";
            Regex reg = new Regex(@"((\d+,).*?)\2");
            while (str != (str = reg.Replace(str, "$1"))) ;
            Console.WriteLine(str);

#6


哇。大家的方法贼多哦。

VB 的instr 是判断的。也不是去重的,刚才试过了。 - -~!
那 么  VB中的方法是什么呢?

#7


引用 5 楼 huangwenquan123 的回复:
C# code

            string str="123,123,12,124,125,124,";
            Regex reg = new Regex(@"((\d+,).*?)\2");
            while (str != (str = reg.Replace(str, "$1"))) ;
            Console.Wri……


 while (str != (str = reg.Replace(str, "$1"))) ;
这是个什么循环?

#8


引用 7 楼 liouse 的回复:
引用 5 楼 huangwenquan123 的回复:
C# code
while (str != (str = reg.Replace(str, "$1"))) ;
这是个什么循环?

相当于
            while (true)
            {
                string temp = str;
                str = reg.Replace(str, "$1");
                if (temp == str)
                {
                    break;
                }
            }

#9




引用 2 楼 effun 的回复:
string.Join(',', a.Split(',').Distinct().ToArray());

#10


牛啊,正则表达式都出来了

#11


string a = "123,123,12,124,125,124,";
            string[] str = a.Split(',');

            IEnumerable<string> ling = (from b in str select b).Distinct();
            StringBuilder strbuil = new StringBuilder(100);
            foreach (string s in ling)
            {
                strbuil.Append(s);
            }

#12


8楼的是最有效和最方便的,楼主可以采用

#13


牛!!
引用 11 楼 hao448609471 的回复:
string a = "123,123,12,124,125,124,";
  string[] str = a.Split(',');

  IEnumerable<string> ling = (from b in str select b).Distinct();
  StringBuilder strbuil = new StringBuilder(100);
  foreach……

#14



string mc = Regex.Replace(str, @"(\d*?,)\1(\d*?,)((\d*?,)(\d*,))\4", "$1$2$3");

#15



string mc = Regex.Replace(str, @"(\d*?,)\1(\d*?,)((\d*?,)(\d*,))\4", "$1$2$3");
//结果:
/*
123,12,124,125,
*/


#16


喜欢二楼的。

#17


再顶!

引用 9 楼  的回复:

引用 2 楼 effun 的回复:
string.Join(',', a.Split(',').Distinct().ToArray());