编辑作为问题是未回答的执行小计过滤后的数据从一个StreamReader
我已经根据1个标准滤波的输出(前3个数字是110210或310,得到3个不同的基团),以从StreamReader的控制台。编辑的问题是因为第一个答案是我给出的具体示例的文字解决方案,我使用的真正字符串长度为450个ASCII字符。我已经调整了示例字符串来解决这个问题,对样本数据有效的任何东西都能处理我所拥有的内容。
所以我真正需要的是,根据前3个数字,从预先指定的已知位置取得3个字母(对于210,它将是字符槽14-16,然后将其用作子类别,总结字符插槽33-37中的所有条目,并输出它们)。
例如字符串:
210!!!!123244AAA75AWEHUIHJUAS!!!11111
210???1223455ABC76554HJHSDFQ????22222
210--32455623ABCFFCDGHDSFAS-----33333
310 1232451 2ABC34 GAERsASDFASDG1234523 44444
310 1234a354GDSAASDR 3 AAA GF234523653hfdssdgSDASDF 11111
310 12378HJK1234 ABC HJHJK123462 ASDHDFS FA REW 22222
4101111ASDJF 1ABCASF D1234 ASGF66666
4102222QW12362ER2 ABC 23459876HJKXC 11111
41033333T123 1RWE AAA ASDFHJKRTR WQ 22222
在这个月底,我的输出是:
210 AAA 11111
210 ABC 55555
310 ABC 66666
310 AAA 11111
410 ABC 77777
410 AAA 22222
的ABC,AAA等总是在同一起跑线数相同的位置,但每个起始号码都会有所不同。
同样地,总计的金额的位置也只在每个起始号码的相同位置。
我已经尝试添加一些string.split到现有的代码(下面),但没有任何运气。
// Read in a file line-by-line, and store in a List.
List<string> list = new List<string>();
using (StreamReader reader = new StreamReader("file.dat"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
var beginning = line.Substring(0, 3);
if (beginning != "210" && beginning != "310" && beginning != "410")
continue;
list.Add(line); // Add to list.
Console.WriteLine(line); // Write to console.
}
}
有人可以为我赞成这个请:)我很快就会有足够的票数。 – Cylen
嗨泽夫,我已经看过这个,我不明白的一件事(这也是它在输入字符串上错误输出的区域的格式不正确),是这样的: 新的 { (lineSubstring(currentLocations [2],currentLocations [3]))+ int.Parse(line.Substring())。 (currentLocations [4],currentLocations [5])) }; 为什么你使用210等的0,3,但在406 409后,为什么不是406 4等? – Cylen
因为我正在使用包含一组数组的字典。 'locations [“210”]'返回一个包含所需字符位置的整数数组。第一个/第二个数字的位置在该数组内总是相同的。 –