ReadLine怎么预读或指定行
ReadLine如何预读或指定行
有文本格式如下:
...
G00 Z20.0
(此处可能还有一个括号)
M05
M09
(D=6.0 R=0.0)
G91 G28 Z0
T2 M06
G80 G17 G40 G49
G90 G54 G00 X0 Y0
...
想要实现将该文本根据“T2 M06”分割成两个文档:
...
G00 Z20.0
(此处可能还有一个括号)
M05
M09
和
(D=6.0 R=0.0)
G91 G28 Z0
T2 M06
G80 G17 G40 G49
G90 G54 G00 X0 Y0
...
问题是“T2 M06”之前还有两行(从括号那一行开始,括号内的内容属于解释文本,属于被分割后的第二个文档) 请问怎么才能实现以关键词之前的一个括号为分界点进行文档分割?
------解决方案--------------------
string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
var ary = Regex.Matches(str, @"(?is).+?(?=$
------解决方案--------------------
\([^()]+\)[^()]*?T2\s+M06)").OfType<Match>().Select(t => t.Value).ToArray();
------解决方案--------------------
有文本格式如下:
...
G00 Z20.0
(此处可能还有一个括号)
M05
M09
(D=6.0 R=0.0)
G91 G28 Z0
T2 M06
G80 G17 G40 G49
G90 G54 G00 X0 Y0
...
想要实现将该文本根据“T2 M06”分割成两个文档:
...
G00 Z20.0
(此处可能还有一个括号)
M05
M09
和
(D=6.0 R=0.0)
G91 G28 Z0
T2 M06
G80 G17 G40 G49
G90 G54 G00 X0 Y0
...
问题是“T2 M06”之前还有两行(从括号那一行开始,括号内的内容属于解释文本,属于被分割后的第二个文档) 请问怎么才能实现以关键词之前的一个括号为分界点进行文档分割?
ReadLine
分割
关键词
文档
------解决方案--------------------
string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
var ary = Regex.Matches(str, @"(?is).+?(?=$
------解决方案--------------------
\([^()]+\)[^()]*?T2\s+M06)").OfType<Match>().Select(t => t.Value).ToArray();
------解决方案--------------------
System.IO.StreamReader sr = new System.IO.StreamReader("c:\\A.txt", System.Text.Encoding.Default);
System.Text.StringBuilder sbPrev = new System.Text.StringBuilder(); //前半部分
System.Text.StringBuilder sbNext = new System.Text.StringBuilder(); //后半部分
string strLine = sr.ReadLine();
bool bNextStart = false;
while (strLine != null)
{
if (strLine.IndexOf("(") >= 0 && strLine.IndexOf(")") > strLine.IndexOf("(")) //含有(...)
bNextStart=true;
if(!bNextStart) //属于前半部分
sbPrev.Append(strLine);
else
sbNext.Append(strLine);
}
sr.Close();
Console.WriteLine(sbPrev.ToString()); //前半部分
Console.WriteLine(sbNext.ToString()); //后半部分