文本内容替换

chunjinyumen 2012-06-13 10:46:11
有下列文本内容:
年 月 日
1 12 3 17 22 0 0.0
1.500000000000D+01
2 12 3 18 4 0 0.0
6.500000000000D+01
13 12 3 18 12 0 0.0
4.300000000000D+01
4 09 12 12 4 0 0.0
7.400000000000D+01
5 12 12 3 6 0 0.0
2.600000000000D+01
6 12 3 18 11 59 44.0
0.000000000000D+00
37 12 3 18 2 0 0.0
4.700000000000D+01
28 12 3 18 4 0 0.0
4.900000000000D+01
9 11 9 3 10 0 0.0
3.600000000000D+01
10 12 3 18 4 0 0.0
7.200000000000D+01
11 12 3 17 22 0 0.0
5.700000000000D+01
12 12 3 22 10 0 0.0
8.000000000000D+01
33 12 3 18 12 0 0.0
3.200000000000D+01
14 12 3 18 12 0 0.0
6.300000000000D+01
45 12 3 18 8 0 0.0
4.300000000000D+01
16 12 3 19 11 59 44.0
5.000000000000D+00
想以数组第一个值"12 3 17"转换为日期2012年3月17号后为基准,将文本中出现的12 3 17的改为11 1 1(日期2011年1月1号)。后面的"12 3 18"转换为日期后为2012年3月18日,与基准差1天,则文本中12 3 18改为11 1 2(日期2011年1月2号)。同理出现的"11 9 3"改的结果应该是(日期2011年1月1号)-其与基准的时间间隔.请教大师们该怎么做??
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ParanoidKing 2012-06-13
  • 打赏
  • 举报
回复

string inputStr = @"
1 12 3 17 22 0 0.0
1.500000000000D+01
2 12 3 18 4 0 0.0
6.500000000000D+01
13 12 3 18 12 0 0.0
4.300000000000D+01
4 09 12 12 4 0 0.0
7.400000000000D+01
5 12 12 3 6 0 0.0
2.600000000000D+01
6 12 3 18 11 59 44.0
0.000000000000D+00
37 12 3 18 2 0 0.0
4.700000000000D+01
28 12 3 18 4 0 0.0
4.900000000000D+01
9 11 9 3 10 0 0.0
3.600000000000D+01
10 12 3 18 4 0 0.0
7.200000000000D+01
11 12 3 17 22 0 0.0
5.700000000000D+01
12 12 3 22 10 0 0.0
8.000000000000D+01
33 12 3 18 12 0 0.0
3.200000000000D+01
14 12 3 18 12 0 0.0
6.300000000000D+01
45 12 3 18 8 0 0.0
4.300000000000D+01
16 12 3 19 11 59 44.0
5.000000000000D+00
"
;

Regex reg = new Regex(@"(\d{2} \d{1,2} \d{1,2})( \d{1,2} \d{1,2} \d{1,2}\.\d)");
DateTime firstDate = Convert.ToDateTime(reg.Match(inputStr).Groups[1].Value);
DateTime baseDate = new DateTime(2011, 1, 1);
TimeSpan ts = firstDate - baseDate;
string outputStr = reg.Replace(inputStr, new MatchEvaluator((m) =>
{
return (Convert.ToDateTime(m.Groups[1].Value) - ts).ToString("yy M d") + m.Groups[2].Value;
}));
Console.WriteLine(outputStr);

/*
1 11 1 1 22 0 0.0
1.500000000000D+01
2 11 1 2 4 0 0.0
6.500000000000D+01
13 11 1 2 12 0 0.0
4.300000000000D+01
4 08 9 27 4 0 0.0
7.400000000000D+01
5 11 9 19 6 0 0.0
2.600000000000D+01
6 11 1 2 11 59 44.0
0.000000000000D+00
37 11 1 2 2 0 0.0
4.700000000000D+01
28 11 1 2 4 0 0.0
4.900000000000D+01
9 10 6 19 10 0 0.0
3.600000000000D+01
10 11 1 2 4 0 0.0
7.200000000000D+01
11 11 1 1 22 0 0.0
5.700000000000D+01
12 11 1 6 10 0 0.0
8.000000000000D+01
33 11 1 2 12 0 0.0
3.200000000000D+01
14 11 1 2 12 0 0.0
6.300000000000D+01
45 11 1 2 8 0 0.0
4.300000000000D+01
16 11 1 3 11 59 44.0
5.000000000000D+00
*/
WUHUANG1 2012-06-13
  • 打赏
  • 举报
回复
2011.10.03
chunjinyumen 2012-06-13
  • 打赏
  • 举报
回复
转不过弯来了,那要怎么去替换文本的内容呢?
EnForGrass 2012-06-13
  • 打赏
  • 举报
回复
不就是个加减法吗? listdic.Add(s, i);//这句中的s改成s-减去或者加上你的基准时间,
参考我的回答
http://topic.csdn.net/u/20120612/13/342271d3-fc56-42d9-9c85-6ea262d901a1.html

111,126

社区成员

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

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

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