这里是c#的新手,我已经对这个问题进行了一些研究,但找不到任何东西,可能没有词汇量。
我的任务是读取一个巨大的文件并仅提取符合条件的行。
代码我用来测试一些东西:
using (StreamReader sr = new StreamReader("SPDS_Test.doc"))
{
while ((line = sr.ReadLine()) != null)
{
try
{
if (line.Contains("R ") | line.Contains("E "))
{
data = line;
data = data.Remove(0, 1);
data= data.Replace(" ", "").Replace("N", "").Replace("+", ",").Replace("·", ",").Replace("?", ",").Replace("(", "").Replace(")", "");
Data.Add(data);
}
}
catch (Exception e)
{
Console.WriteLine("--------", e);
Console.WriteLine("--------Press any to continue---------");
Console.ReadKey();
}
}
foreach (string d in Data)
{
Console.WriteLine(d);
Console.ReadKey();
}
}
这是文件的一部分:
R XRPA168VC
B A
L 手动紧急停堆
E XRPA300KS
A 反应堆停堆 汽轮机停机
R XRPR111VR
B IP
E F2/3(XRPR144KS, XRPR145KS, XRPR146KS)
我注意到的是,如果周围有中文,字母甚至不是字母,例如我尝试了条件line.Substring(0,1)==“R”,它找不到那些行。< / p>
无论我做什么,我的代码都只会返回
XPR111VR
F2/3XRPR144KS, XRPR145KS, XRPR146KS
我真的需要能够提取每条R和E线。
答案 0 :(得分:0)
我只是尝试将整个文档复制到记事本中并将编码放入UTF8中, 似乎后来工作但不确定它是否可靠。
答案 1 :(得分:0)
试试这个......它有效
using (StreamReader sr = new StreamReader("SPDS_Test.doc"))
{
string line;
string data;
List<string> Data = new List<string>();
while ((line = sr.ReadLine()) != null)
{
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(line);
string myString = utf8.GetString(utfBytes, 0,
utfBytes.Length);
try
{
if (myString.Contains("R ") || myString.Contains("E "))
{
data = line;
data = data.Remove(0, 1);
data= data.Replace(" ", "").Replace("N",
"").Replace("+", ",").Replace("·", ",").Replace("?",
",").Replace("(", "").Replace(")", "");
Data.Add(data);
}
}
catch (Exception e)
{
Console.WriteLine("--------", e);
Console.WriteLine("--------Press any to continue---------");
Console.ReadKey();
}
}
foreach (string d in Data)
{
Console.WriteLine(d);
Console.ReadKey();
}
}