我有一个看起来像这样的文件:
J6 INT-00113G 227.905 5.994 180 ~!@#$%&^)
J3 INT-00113G 227.905 -203.244 180 12341341312315
U13 EXCLUDES -42.210 181.294 180 QFP128
U3 IC-00276G 5.135 198.644 90 B%GA!@-48
U12 IC-00270G -123.610 -201.594 0 SOP8_000
J1 INT-00112G 269.665 179.894 180 SOIC16_1
J2 INT-00112G 269.665 198.144 180 SOIC16-_2
.. .......... ....... ....... ... ................
我想匹配 第6列 中的结束值,以便从列表中删除它。第6列中的值的长度未确定,可以包含任何字符。所以我想做的是匹配空间之前的结束值。或者只是行尾。
的 CODE: 的
// Reads the lines in the file to format.
var fileReader = File.OpenText(filePath + "\\Remove Package 1 Endings.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);
}
var mainResult = new List<string>();
var theResult = new List<string>();
foreach (var mainLine in fileList)
mainResult.Add(string.Join(" ", mainLine));
foreach (var theLine in mainResult)
{
// PLACEMENT ONE Regex
Match theRegex = Regex.Match(theLine, @"insert the regex here!");
if (theRegex.Success)
theResult.Add(string.Join(" ", theLine));
}
// Removes the matched values from both of the Regex used above.
List<string> userResult = mainResult.Except(theResult).ToList();
// Prints the proper values into the assigned RichTextBoxes.
foreach (var line in userResult)
richTextBox2.AppendText(line + "\n");
我要做的是让文件看起来像这样:
J6 INT-00113G 227.905 5.994 180
J3 INT-00113G 227.905 -203.244 180
U13 EXCLUDES -42.210 181.294 180
U3 IC-00276G 5.135 198.644 90
U12 IC-00270G -123.610 -201.594 0
J1 INT-00112G 269.665 179.894 180
J2 INT-00112G 269.665 198.144 180
的问题: 的
修改 的
添加代码:
var lines = new List<string>(File.ReadAllLines(filePath + "\\Remove Package 1 Endings.txt"));
for (int i = 0; i < lines.Count; i++)
{
var idx = lines[i].LastIndexOf(" ");
if (idx != -1)
lines[i] = lines[i].Remove(idx);
richTextBox1.AppendText(lines[i] + Environment.NewLine
}
答案 0 :(得分:1)
\S+$
应该执行,并启用多行功能。 (不确定你在C#中启用正则表达式标志到底是怎么回事?是吗?但是在字符串前加 (?m)
可以使用一些正则表达式引擎,虽然这不是唯一的方法。)
\S
- 匹配任何非空白字符
+
- 表示前面的正则表达式元素应匹配一次或多次
$
- 表示匹配字符串的结尾,或者如果启用了多行,则表示行的结尾。
(尽管正如其他人所说的那样,与正则表达式一起使用可能会使事情变得更加复杂。)
答案 1 :(得分:1)
我认为你让它变得比实际更复杂;例如,如果根据你的例子进行格式化,下面的内容可以帮助你删除数据的最后一部分,稍微调整一下,例如修剪(显然,缓解错误),我敢肯定这适合:
var lines = new List<string>(File.ReadAllLines(path));
for (int i = 0; i < lines.Count; i++)
{
var idx = lines[i].LastIndexOf(" ");
if (idx != -1)
{
lines[i] = lines[i].Remove(idx);
}
}
请注意,可以一次性读取文件的所有行,根据要加载的文件的大小,这并不总是需要的,但是我看到你正在加载每行。处理 - 在这种情况下,我们可以使整个事情更简洁。
答案 2 :(得分:0)
只是依赖于每个列由您可以使用的空格分隔的事实:
\s+([\S]*)$