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

belldandy11 2007-05-21 03:05:06

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

大家帮忙想想
...全文
310 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
  • 打赏
  • 举报
回复
正则实现?在程序里实现不可以吗?
代码下载地址: https://pan.quark.cn/s/d56c0ac7d9f6 交流群 telegram: https://t.me/autosymlink_channel 文档 https://.com/shenxianmq/Auto_Symlink/wiki Auto_Symlink 小白牙整理 项目简介 是一个自动化工具,专门设计用于管理通过 CloudDrive2/Alist 挂载到本地的网盘。 它能够创建软链接,使得像 Emby/Jellyfin/Plex 这样的媒体服务器能够更容易地刮削和读取内容,同时减少对网盘的频繁访问。 主要特性: 实时监控: 需要CloudDrive2的会员功能文件通知,监控指定目录,自动进行必要的更新和管理。 自动化处理: 创建与更新软链接/strm文件,自动复制与更新元数据。 清理功能: 清空无效文件夹和软链接,保持本地云端一致性。 转存监控: 在常用工具,自动监控指定文件夹,转移到目标文件夹,并删除源文件 媒体库通知: 支持Emby/Plex通知,当检测到新视频的时候,会自动通知Emby/Plex扫描该视频,极大加块扫库速度 封面制作: 自动生成美的Emby媒体库封面 Web 界面操作: 提供一个简洁易用的Web界面,用于查看日志、编辑配置和监控系统状态。 这使得用户能够更方便地管理和调整 Auto_Symlink 的运行。 更多功能可以去常用工具自行发掘. -- 安装和使用 直接运行 Python 文件: - 在首次运行后, 文件夹会生成 文件。 根据文件的注释进行配置。 - 配置完成后,使用命令 运行。 - 在 Windows 系统,需要以管理员模式运行。 Docker 运行: 使用以下命令运行 Dock...

62,269

社区成员

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

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

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

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