替换文本中的时间

chunjinyumen 2012-06-05 05:30:47
比如文本中的内容如下:
1 2012 11 28 hhhhhhhbni fdfsasdfsdfsa
dfoisafio jsdpofpjas sodjf
dnfinspaffsa
dnsfpasfa'fad[fa
2 2012 11 29 jpdsjofjs[a[k[paskf[a f
dfjopas fa [sdfk[pa [as[fk
dpfoapfsdo[f
;osafo
3 2012 11 27 dpofjap poasojfpajsa
ndfa'opfd
fpaspfj pa'f
pas'fj'afj'afj'afj'af
4 2012 9 28 posdjf]opa'pfasjp'fas[a
;asfjp'asjdj'fas
n;kslanfl;a
;safn;a'a;ldfj;'a
我想把2012 11 28替换成2011 9 11,相对的2012 11 29就替换成2011 9 12,2012 11 27替换成2011 9 10号。请问有什么好办法可以解决?
...全文
188 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chunjinyumen 2012-06-06
  • 打赏
  • 举报
回复
好吧,自己解决了,没用正则表达式。我要换成2011年9月14号之前的日期。可能是没说清问题,谢谢各位
ParanoidKing 2012-06-06
  • 打赏
  • 举报
回复
那把12换成11不就完了。正则是全部替换,不麻烦的吧。感觉还是不是很清楚lz的需求。
chunjinyumen 2012-06-06
  • 打赏
  • 举报
回复
我的文本内容比较多,可能有50000条(行),源格式基本和上面的的一样:
5 12(年) 4(月) 17(日) 2 0 0.0 .000000000000D+00
.560000000000D+02 .272387465181D+01
.305287539959D-05 .515363817406D+04
.177618000000D+06
5 12 4 18 4 0 0.0 .000000000000D+00
.570000000000D+02 .250907376995D+01
.321865081787D-05 .515363942719D+04
.180018000000D+06
8 12 4 19 2 0 0.0 .000000000000D+00
.330000000000D+02 .135995841980D+01
.635161995888D-06 .515368996811D+04
.177642000000D+06
目标想把年月日换到2011年之内的日期都可以,文本中大多时候是只有一天,但是当文本内容达到50000条时就会出现多天(如上面所示),用正则表达式的话,做判断是不是很麻烦会?
ParanoidKing 2012-06-06
  • 打赏
  • 举报
回复
lz到底想把什么替换成什么?源格式和目标格式是怎么样的?得有个规则吧。用正则表达式应该可以做到,不会的话要学一下。
chunjinyumen 2012-06-06
  • 打赏
  • 举报
回复
请高手帮下忙,实在是想不通了,
END OF
5 12 4 17 2 0 0.0 .000000000000D+00
.560000000000D+02 .272387465181D+01
.305287539959D-05 .515363817406D+04
.177618000000D+06
5 12 4 18 4 0 0.0 .000000000000D+00
.570000000000D+02 .250907376995D+01
.321865081787D-05 .515363942719D+04
.180018000000D+06
8 12 4 19 2 0 0.0 .000000000000D+00
.330000000000D+02 .135995841980D+01
.635161995888D-06 .515368996811D+04
.177642000000D+06
9 12 4 20 2 0 0.0 .000000000000D+00
.570000000000D+02 .139088732118D+01
.240000000000D+01 .570000000000D+02
.175968000000D+06
9 12 4 17 4 0 0.0 .000000000000D+00
.580000000000D+02 .340697895755D+00
.240000000000D+01 .580000000000D+02
.180018000000D+06
15 12 4 17 2 0 0.0 .000000000000D+00
.770000000000D+02 .123516555941D+01
.240000000000D+01 .770000000000D+02
.177618000000D+06
15 12 4 17 4 0 0.0 .000000000000D+00
.780000000000D+02 .228556538610D+01
.240000000000D+01 .780000000000D+02
.180018000000D+06
18 12 4 17 2 0 0.0 .000000000000D+00
.840000000000D+02 .272304854490D+01
.240000000000D+01 .840000000000D+02
.177618000000D+06
18 12 4 18 4 0 0.0 .000000000000D+00
.106000000000D+03 .167291953360D+01
.340000000000D+01 .106000000000D+03
.180018000000D+06
后面还有很多类似的,最好能做判断?
chunjinyumen 2012-06-06
  • 打赏
  • 举报
回复
可是如果我的文本内容有很多条,可能达到2000条这样的,是不是还是有点问题
karoro111 2012-06-05
  • 打赏
  • 举报
回复
有点乱
EnForGrass 2012-06-05
  • 打赏
  • 举报
回复

string input = @"
1 2012 11 28 hhhhhhhbni fdfsasdfsdfsa
dfoisafio jsdpofpjas sodjf
dnfinspaffsa
dnsfpasfa'fad[fa
2 2012 11 29 jpdsjofjs[a[k[paskf[a f
dfjopas fa [sdfk[pa [as[fk
dpfoapfsdo[f
;osafo
3 2012 11 27 dpofjap poasojfpajsa
ndfa'opfd
fpaspfj pa'f
pas'fj'afj'afj'afj'af
4 2012 9 28 posdjf]opa'pfasjp'fas[a
;asfjp'asjdj'fas
n;kslanfl;a
;safn;a'a;ldfj;'a
";
int k= 0;
string[] newstr = new string[] { "2011 9 11", "2011 9 12", "2011 9 10" };
string pat = @"(?i)\d{4}\s*\d{2}\s*\d{2}";

input = Regex.Replace(input, pat, new MatchEvaluator(d =>
{
k++;
return d.Value == "" ? "" : newstr[k-1];
}));
/*
1 2011 9 11 hhhhhhhbni fdfsasdfsdfsa
dfoisafio jsdpofpjas sodjf
dnfinspaffsa
dnsfpasfa'fad[fa
2 2011 9 12 jpdsjofjs[a[k[paskf[a f
dfjopas fa [sdfk[pa [as[fk
dpfoapfsdo[f
;osafo
3 2011 9 10 dpofjap poasojfpajsa
ndfa'opfd
fpaspfj pa'f
pas'fj'afj'afj'afj'af
4 2012 9 28 posdjf]opa'pfasjp'fas[a
;asfjp'asjdj'fas
n;kslanfl;a
;safn;a'a;ldfj;'a
*/
ParanoidKing 2012-06-05
  • 打赏
  • 举报
回复

TimeSpan ts = new DateTime(2011, 9, 11) - new DateTime(2012, 11, 28);
string 结果 = new Regex(@"20\d{2} \d{1,2} \d{1,2}").Replace(原字符串, new MatchEvaluator((o) =>
{
return (Convert.ToDateTime(o.Value) + ts).ToString("yyyy M d");
}));
soul850522 2012-06-05
  • 打赏
  • 举报
回复
你算出来2012 11 28和2011 9 11相差几天啊,然后程序里就在你要修改的日期里减去相应的天数不就好啦

110,535

社区成员

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

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

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