去掉字符串中的相同字符,但,号不去掉,这个用正则能实现吗?正则学的不精,虚心求教~

belldandy11 2007-05-21 03:05:06

1,2,3,2,3,4,5,1 字符串里重复的数字只会出现一次
替换成
1,2,3,4,5 1-5的顺序可以不考虑

大家帮忙想想
...全文
274 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
测试通过 谢了
-过客- 2007-05-21
  • 打赏
  • 举报
回复
2003里用ArrayList

List<string> list = new List<string>();
替换为
ArrayList arr = new ArrayList();
后面的list替换为arr就行了,其它全都一样
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
05多好啊
treeview 泛型什么的多好用

可惜现在我的机子太烂了 跑03都勉强 等10.1买了新的再说了....
chuxue1342 2007-05-21
  • 打赏
  • 举报
回复
不错!
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
我用的是2003................
想弄05好久了
但是..................
反正有点郁闷

-过客- 2007-05-21
  • 打赏
  • 举报
回复
看楼主所给例子,数字都是一位的,那是说可能出现的数字也就0~9,最简单的就是IndexOf了,用不着循环-_-#

如果可能有两位以上的数字,用正则可以做到,但实现的机制其实也用到了循环,所以还不如直接用泛型了

正则的方法

string test = "1,23,3,23,3,4,5,1";
string temp = Regex.Replace(test, @"\d+", new MatchEvaluator(expReplace));
string result = Regex.Replace(temp, ",+", ",");
result = result.TrimEnd(',');

List<string> list = new List<string>();
private string expReplace(Match m)
{
if (list.Contains(m.Value))
{
return m.Value.Replace(m.Value, "");
}
else
{
list.Add(m.Value);
return m.Value;
}
}

非正则的方法

string str = "1,23,3,23,3,4,5,1";
string[] ss = str.Split(',');

List<string> list = new List<string>();
foreach (string a in ss)
{
if (!list.Contains(a))
{
list.Add(a);
list.Add(",");
}
}

string resultStr = "";
foreach (string s in list)
{
resultStr += s;
}
resultStr = resultStr.TrimEnd(',');
babyrockxray 2007-05-21
  • 打赏
  • 举报
回复
string s = "1,2,2,3,2,4,6,1,5";
string[] arr = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
Array.Sort<string>(arr);

for (int i = 0; i < arr.Length; i++)
{
int j = 0;
for (j = i; j < arr.Length && arr[i] == arr[j]; j++)
{
if (i != j)
{
arr[j] = string.Empty;
}
}
i = j - 1;
}
arr = Array.FindAll<string>(arr,delegate(string tmp) { return !string.IsNullOrEmpty(tmp); });
babyrockxray 2007-05-21
  • 打赏
  • 举报
回复
10000个字符,数据量很少,基本忽略
babyrockxray 2007-05-21
  • 打赏
  • 举报
回复
先排序,再去除重复的,效率比较高
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
先 split(',')掉~逗号

C# 冒泡排序``
加 一一对比`~ 如果数字相同 则去掉其中一个数字
---------------------------------------------------
这个我清楚
就是想问下有没有更好的方法 冒泡的效率实在是.........
xuyiazl 2007-05-21
  • 打赏
  • 举报
回复
得出的结果就可以是依次排序的`结果
xuyiazl 2007-05-21
  • 打赏
  • 举报
回复
先 split(',')掉~逗号

C# 冒泡排序``
加 一一对比`~ 如果数字相同 则去掉其中一个数字
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
呵呵
可能是不能实现,就是钻牛角了,实在不想用for
因为如果字符串是 1,2,......................
比方说里面有10000个字符,用for循环判断去掉重复字符会不会很耗时间
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
我想实现的是
字符串 1,2,3,4,5
字符串 2,4,6 2个字符串中重复的数字只会出现一次
用某种方法合并以后能够 得到 1,2,3,4,5,6 这样的字符串, 数字的顺序可以不考虑
shadow841112 2007-05-21
  • 打赏
  • 举报
回复
正则实现???。。。。。。。。。。。。。。。。。。。。。

太震撼了吧
belldandy11 2007-05-21
  • 打赏
  • 举报
回复
大家往正则方面想,
如果是split(',')然后在for判断就免了...
civyliu 2007-05-21
  • 打赏
  • 举报
回复
正则实现?在程序里实现不可以吗?

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧