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);
我的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;
}
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#