2014-12-06 52 views
-3

我有文字的下面几行:取消C#断行

W&BL 15&384&320&214&1&S235JR&&&&&&&&&&S&&0.267&&&&4&& 
N&214.nc 
A&214&1&&15 
W&BL 15&384&320&215&1&S235JR&&&&&&&&&&S&&0.267&&&&4&& 
N&215.nc 
A&213&2&&14 

我想删除的换行符所以结局会是这样:

A&213&2&&14W&BL 15&384&320&214&1&S235JR&&&&&&&&&&S&&0.267&&&&4&&N&214.nc 
A&214&1&&15W&BL 15&384&320&215&1&S235JR&&&&&&&&&&S&&0.267&&&&4&&N&215.nc 

我这样做是因为我需要格式化这些行,我将整个文本文件放在每行的阅读器中。当我使用换行符进行过滤时,我无法正确搜索行。由于我需要删除S235JR之后的所有内容,因此请将&替换为;,并使用BL代码开始行。

如果有人知道更聪明/更好的解决方案来过滤这些线条,你将成为我今日的英雄。

编辑澄清:

这是一个例子,它需要如何进行格式化:

H&HEA100&1712&&1001&2&S235JR&&&HEA100 - 1712&&&&&&&S&&0.96&&&&2&&&1.7&0.2&0.2 
N&1001.nc 
W&BL 15&384&320&215&1&S235JR&&&&&&&&&&S&&0.267&&&&4&& 
N&215.ncA&214&1&&15 
H&L80X8&375&&1010&1&S275JR&&&L80X8 - 375&&&&&&&S&&0.117&&&&4&&&0.4&0.1&0.1 
N&1010.nc 

格式化后:

H;HEA100;1712;;1001;2;S235JR; 
BL 15;384;320;215;1;S235JR; 
L80X8;375;;1010;1;S275JR; 

输入是一个导入的文本文件StreamReader的。 H,BL 15L80X8是在6个&个字符后确定的。该程序最初是在DOS下编写的,我需要将它转换为C#。我对此感到抱歉。

+2

那你试试? – 2014-12-06 13:18:11

+0

我完全不知道如何让这个工作。我试过这个:'string linefixed = Regex.Replace(line,@“^ \ s * $”,string.Empty,RegexOptions.Multiline).TrimEnd(); MessageBox.Show(linefixed);'该消息框用于测试目的。 – KvdB 2014-12-06 13:22:42

+1

从您的示例中很难看出,但是您是否想要移除_every_ NewLine?或者你是否将3条线一次分成一条线?或者结合行直到你点击“N&21x.nc”(或“N&xxx.nc”或其他模式),然后启动NewLine? – 2014-12-06 13:32:04

回答

3
x.Replace(Environment.NewLine, String.Empty); 

其中x是字符串。

+4

请注意,这不会更改'x'中的值,您必须将表达式的结果分配给某些内容。 – Guffa 2014-12-06 13:28:03

+0

请注意,这将删除每个换行符(或换行符?),也是在.nc – Steve 2014-12-06 13:44:30

0
x = x.Replace("\r\n", ""); 

x是你的字符串对象;

+2

之后所需的换行符。请注意,这不会更改'x'中的值,您必须将表达式的结果分配给某些内容。 – Guffa 2014-12-06 13:28:20

+1

''\ r \ n''不是C#,是吗? '''表示一个char和'\ r \ n'是两个字符。 – 2014-12-06 13:31:47

+0

谢谢Thomas&Guffa。我已更正了他们的监督 – Anaramer 2014-12-06 14:29:44

1

从你的问题中的例子看来,你想要删除换行符,但是保持每三个换行符。

您可以使用符合三线正则表达式,并删除它们两者之间的换行符:

text = Regex.Replace(text, @"(.+)\r\n(.+)\r\n(.+)", "$1$2$3"); 
+0

一行的开头以_a letter_'&'开始,最后有'N&215.nc'。例如:'W&BL 15&384&320&215&1&S235JR &&&&&&&&&&&& && 0.267 &&&& 4 && N&215.nc'。从那一行开始,我需要删除'S235JR'后的所有内容,并用';'替换每个'&'字符。 – KvdB 2014-12-06 13:51:37

0
string x = x.Replace("&", ";"); 
string x1 = x.Substring(x.IndexOf("H;"), x.IndexOf("S235JR;", x.IndexOf("H;")) - x.IndexOf("H;")+7); 
string x2 = x.Substring(x.IndexOf("BL 15;"), x.IndexOf("S235JR;", x.IndexOf("BL 15;")) - x.IndexOf("BL 15;")+7); 
string x3 = x.Substring(x.IndexOf("L80X8;"), x.IndexOf("S275JR;", x.IndexOf("L80X8;")) - x.IndexOf("L80X8;")+7); 
string result = x1 + "\r\n" + x2 + "\r\n" + x3;