当前位置:编程学习 > C#/ASP.NET >>

C# 截取字符与过滤问题


string S="123,12345,14564789,123,456789,456789,454564645,";


我要过滤这个字符串中的最后一个逗号 与过滤重复的“123,”,“456789,”,  要怎么写求教一个方法?


如果当我不知道重复的是什么这时候要怎么写求教?谢谢 --------------------编程问答--------------------
 string S = "123,12345,14564789,123,456789,456789,454564645,";
            var result = string.Join(",", S.TrimEnd(',').Split(',').Distinct());
            Console.WriteLine(result);
--------------------编程问答--------------------
引用 1 楼 guwei4037 的回复:
 string S = "123,12345,14564789,123,456789,456789,454564645,";
            var result = string.Join(",", S.TrimEnd(',').Split(',').Distinct());
            Console.WriteLine(result);



我的C#里面怎么没有Distinct()这个方法? --------------------编程问答-------------------- .net framework4.0以上有啊。 --------------------编程问答-------------------- 恩好的 我现在用的是3.5 --------------------编程问答-------------------- 首先用判断if(s.LastIndexOf(",")==s.length-1){s = s.Substring(0,s.LastIndexOf(","));}来去掉最后一个逗号,
然后split以逗号作为参数把该字符串切成数组。
string[] array = s.Split(",");
然后进行一个数组排序
Array.Sort(array);
再用循环把不重复的拿出
List<String> list = new List<String>();
for(int i=0;i<array.length;i++){
 if(list.Count==0||!array[i].equals(list[list.Count-1])){
   list.add(array[i]);
 }
}
最把list数据拿出来还原成string型

public String strDistinct(Stirng str){
  if(str.LastIndexOf(",")==str.length-1){str = str.Substring(0,str.LastIndexOf(","));}
string[] array = s.Split(",");
Array.Sort(array);
List<String> list = new List<String>();
for(int i=0;i<array.length;i++){
 if(list.Count==0||!array[i].equals(list[list.Count-1])){
   list.add(array[i]);
 }
}
str="";
for(int i=0;i<list.Count;i++){
  if(i!=0){str+=",";}
   str+=list[i];
}
return str;
}
--------------------编程问答--------------------
引用 4 楼 L_Y_H_1_2_3_4 的回复:
恩好的 我现在用的是3.5

3.5也有的,要引用下命名空间
using System.Linq;

不过版主写的String.Join 方法参数要4.0以上才能使用

3.5的要ToArray一下
var result = string.Join(",", S.TrimEnd(',').Split(',').Distinct().ToArray()); --------------------编程问答-------------------- 来看答案的,Linq好东西 --------------------编程问答-------------------- 你可以同时把中间多余的逗号和空白也过滤掉,例如:
string S = "123,12345,14564789,,,123,456789,    ,456789,454564645,";
var query = (from x in S.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            where x.Trim() != string.Empty
            select x).Distinct();
var result = string.Join(",", query.ToArray());
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,