求c#中有分隔符的字符串中用去掉有重复字符。

有字符串如下所示:stringstr="a,b,c,a,d,c,d";已知该字符串用逗号分割求:如何去掉有重复的字符,得到:str="a,b,c,d";要求用最简单的办法... 有字符串如下所示:
string str="a,b,c,a,d,c,d";
已知该字符串用逗号分割
求:如何去掉有重复的字符,得到:str="a,b,c,d";
要求用最简单的办法,最好不要用循环比较!因为字符串比较多,每次都要循环检查是否有重复的数据会比较繁琐 。
展开
 我来答
宇宙之心眼
2013-01-27 · TA获得超过623个赞
知道小有建树答主
回答量:610
采纳率:100%
帮助的人:415万
展开全部
用一个Hashtable来记录一下出现的值就行了

static void Main(string[] args)
{
string str = "a,b,c,a,d,c,d";
string[] arr = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
StringBuilder sb = new StringBuilder();
Hashtable ht = new Hashtable();
foreach (string s in arr)
{
if (!ht.ContainsKey(s))
{
sb.AppendFormat("{0},", s);
ht.Add(s, string.Empty);
}
}
Console.Write(sb.ToString().TrimEnd(','));
Console.Read();
}
匿名用户
推荐于2018-04-04
展开全部
先用Split转化成数组,然后依次读取数组数据循环做比较,如果有,则删除,没有则添加到另一个字符串。这是一种比较明了的方法,还有一种是用正则:
str="a,b,c,d,ccc,ee,cc,ccc,ee,d,b,h,b,";
var reg =/\b([a-z]+)[,]{1}(?=.+\1\b)/g;
alert(str.replace(reg,""));

注意:正则如果你熟悉就用,不熟,用循环也行,正则只是代码少一点,执行效率其实差不多的,正则也是循环执行的。不使用循环是不可能的。
我之前处理此类问题都是交给js去执行的,所以如果你要c#可能语法要改一下。c#是服务器端的运算,不论你怎么处理,都会使用到循环,不可能不使用循环,此类数据在提交的时候就用js过滤掉就不会给服务器添加负担了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jmuydm
2013-01-31
知道答主
回答量:3
采纳率:0%
帮助的人:4420
展开全部
string sps = str.split(',');
再用hashtable存储,自动会去掉重复,再把hashtable的数据拼接起来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-01-31
展开全部
先把这个字符串存到集合里面去 集合有属性可以直接找到重复的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂暴的大将军
2013-01-27 · TA获得超过398个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:145万
展开全部
shenmeyisi
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式