文本内容替换
有下列文本内容:
年 月 日
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号)-其与基准的时间间隔.请教大师们该怎么做??
[解决办法]
不就是个加减法吗? listdic.Add(s, i);//这句中的s改成s-减去或者加上你的基准时间,
参考我的回答
http://topic.csdn.net/u/20120612/13/342271d3-fc56-42d9-9c85-6ea262d901a1.html
[解决办法]
string inputStr = @"1 12 3 17 22 0 0.0 1.500000000000D+01 2 12 3 18 4 0 0.0 6.500000000000D+0113 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+0037 12 3 18 2 0 0.0 4.700000000000D+0128 12 3 18 4 0 0.0 4.900000000000D+01 9 11 9 3 10 0 0.0 3.600000000000D+0110 12 3 18 4 0 0.0 7.200000000000D+0111 12 3 17 22 0 0.0 5.700000000000D+0112 12 3 22 10 0 0.0 8.000000000000D+0133 12 3 18 12 0 0.0 3.200000000000D+0114 12 3 18 12 0 0.0 6.300000000000D+0145 12 3 18 8 0 0.0 4.300000000000D+0116 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+0113 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+0037 11 1 2 2 0 0.0 4.700000000000D+0128 11 1 2 4 0 0.0 4.900000000000D+01 9 10 6 19 10 0 0.0 3.600000000000D+0110 11 1 2 4 0 0.0 7.200000000000D+0111 11 1 1 22 0 0.0 5.700000000000D+0112 11 1 6 10 0 0.0 8.000000000000D+0133 11 1 2 12 0 0.0 3.200000000000D+0114 11 1 2 12 0 0.0 6.300000000000D+0145 11 1 2 8 0 0.0 4.300000000000D+0116 11 1 3 11 59 44.0 5.000000000000D+00*/