请教正则的写法.

fancystyle 2012-06-26 01:12:58
如何实现如下替换:

如:
a1a ---> a001a
1aa ---> 001aa
b12 ---> b012

意图是想用用C#实现 StrCmpLogical 方法,实现Windows Explore 下的按文件名排序,
也就是:
如果有三个文件如: 1.txt,2.txt,10.txt ,默认字符串排序会排成1.txt,10.txt,2.txt
...全文
188 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjh200102 2012-06-29
  • 打赏
  • 举报
回复
楼上good.
fancystyle 2012-06-26
  • 打赏
  • 举报
回复
结帖.
Regex.Replace(s,"\\d+",m=>m.Value.PadLeft(3,'0'))
EnForGrass 2012-06-26
  • 打赏
  • 举报
回复
PadLeft补充0.1楼已经给了答案

string[] arr = { @"C:\1.txt", @"C:\2.txt", @"C:\10.txt" };
arr = arr.OrderBy(p => System.IO.Path.GetFileName(p)).ToArray();
arr.ToList().ForEach(x => Console.WriteLine(x));
q107770540 2012-06-26
  • 打赏
  • 举报
回复

string[] ay={"1.txt","2.txt","10.txt"};
ay=ay.OrderBy(a=>System.IO.Path.GetFileNameWithoutExtension(a)).ToArray();
cnfixit 2012-06-26
  • 打赏
  • 举报
回复
lsv5
EnForGrass 2012-06-26
  • 打赏
  • 举报
回复
请说清楚你的问题
q107770540 2012-06-26
  • 打赏
  • 举报
回复

void Main()
{
string[] ay={"a1a","1aa","b12"};
foreach(string s in ay)
{
Console.WriteLine(Regex.Replace(s,"\\d+",m=>m.Value.PadLeft(3,'0')));
}
/*
a001a
001aa
b012
*/
}
q107770540 2012-06-26
  • 打赏
  • 举报
回复
你到底是要替换还是排序呢?

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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