使用linq解析文本
本文关键字:文本 linq 使用 | 更新日期: 2023-09-27 18:03:57
我有这样的文本
5 1 .021 -56.6 -5 0.4 -5 0.
-.05 -.1 .05 -.1 .05 .1 -.05 .1
YESA 1.
.8507 .84993
,我必须得到
5 1 .021 -56.6 -5 0.4 -5 0.
-.05 -.1 .05 -.1 .05 .1 -.05 .1
YESA 1. 0. 0. 0. 0. 0. 0.
.8507 .84993 0. 0. 0. 0. 0. 0.
但是当我使用下一个结构
FileStream fs = new FileStream(fileName, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string temp = System.Text.RegularExpressions.Regex.Replace(line, @"'s+", " ");
string[] vector = temp.Split(' ');
for (int i = 0; i < vector.Length; i++)
Console.WriteLine(ConvertToFloat(ConvertString(vector[i])));
}
我不明白你为什么要费心去解析浮点数。
看起来你只有几行项目(可能是浮点数,也可能不是浮点数),你必须完成这8行项目。像
foreach (string line in lines)
{
var words = line.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach(string w in words)
Console.Write("{0,6}", w);
// filling out
for (int i = words.Length; i < 8; i++)
Console.Write("{0,6}", "0.");
Console.WriteLine();
}
我使用了两个辅助函数
private float ConvertToFloat(string line)//to check integer or float number
{
string temp = "";
if (line[line.Length - 1] == ',' || line[0] == ',')
{
temp = line.Replace(',', ''0');
return float.Parse(temp);
}
else
return float.Parse(line);
}
private string ConvertString(string line)//change '.' to ','
{
return line.Replace('.', ',');
}