【发布时间】:2011-10-12 18:54:23
【问题描述】:
我有一个如下所示的文件:
STUFF STUFF **X** **Y** STUFF STUFF
J6 INT-00113G 227.905 5.994 180 SOIC8
J3 INT-00113G 227.905 -203.244 180 SOIC8
U13 EXCLUDES -42.210 181.294 180 QFP128
U3 IC-00276G 5.135 198.644 90 BGA48
U12 IC-00270G -123.610 -201.594 0 SOP8
J1 INT-00112G 269.665 179.894 180 SOIC16
J2 INT-00112G 269.665 198.144 180 SOIC16
我需要分别抓取第三列和第四列并将它们存储到C#中的列表中。
我目前正在匹配 第 3 列和第 4 列,使用:
var xyResult = new List<string>();
var mainResult = new List<string>();
foreach (var mainLine in fileList)
mainResult.Add(string.Join(" ", mainLine));
foreach (var xyLine in mainResult)
{
Match xyRegex = Regex.Match(xyLine, @"[\d]+\.[\d]+\s+[\d]+\.[\d]+");
if (xyRegex.Success)
{
xyResult.Add(string.Join(" ", xyRegex));
}
}
List<string> finalXYResult = xyResult.ToList();
foreach (var line in finalXYResult)
displayXYRichTextBox.AppendText(line + "\n");
现在我将匹配 X 和 Y 的正则表达式存储到 one 列表中。我想将两列值分开存储。 所以,X 一个列表,Y 一个列表。
问题:
- 我可以使用什么正则表达式来匹配第三列数字并将其存储在 "X" 和 (或单独使用另一个正则表达式)中 em> 匹配第 4 列数字并将其存储在 "Y"?
编辑:
private void calculateXAndYPlacementTwo()
{
// Reads the lines in the file to format.
var fileReader = File.OpenText(filePath + "\\Calculating X,Y File.txt");
// Creates a list for the lines to be stored in.
var fileList = new List<string>();
// Adds each line in the file to the list.
while (true)
{
var line = fileReader.ReadLine();
if (line == null)
break;
fileList.Add(line);
}
// Creates new lists to hold certain matches for each list.
var xyResult = new List<string>();
var mainResult = new List<string>();
var xResult = new List<string>();
var yResult = new List<string>();
foreach (var mainLine in fileList)
mainResult.Add(string.Join(" ", mainLine));
mainResult.ForEach(xyLine =>
{
Match xyRegex = Regex.Match(xyLine, @"(?<x>-?\d+\.\d+)\s+(?<y>-?\d+\.\d+)");
if (xyRegex.Success)
{
String xValue = xyRegex.Groups["x"].Value;
String yValue = xyRegex.Groups["y"].Value;
xyResult.Add(String.Join(" ", new[]{ xValue, yValue }));
foreach (var line in xValue)
richTextBox1.AppendText(line + "\n");
foreach (var line in yValue)
richTextBox2.AppendText(line + "\n");
}
});
}
【问题讨论】:
标签: c# regex list foreach match