我需要从文本文件中提取一些数据并插入excel表中的列。如果已知字符串的行和长度,我知道如何执行此操作。
try
{
using (System.IO.StreamReader sr = new System.IO.StreamReader("test.txt")
{
string line;
while ((line = sr.ReadLine()) != null)
{
listSNR.Items.Add(line.Substring (78,4));
}
}
}
但是特定的文本文件很复杂,无法提供起始索引或长度。但是该行的起始字(PCPU01)是已知的。
例如:PCPU01,T2716,0.00,0.01,0.00,0.00
输出:
T2716 0 0.01 0 0
在这种情况下,有人可以让我知道如何提取文本吗?
答案 0 :(得分:2)
using(System.IO.StreamReader sr = new System.IO.StreamReader("test.txt"))
{
string line;
while((line = sr.ReadLine()) != null)
{
string[] split = line.Split(',');
//...
}
}
split[0]
将返回"PCPU01"
,split[1]
"T2716"
等等。
答案 1 :(得分:1)
您可以将一个字符串拆分为一个字符串数组,由给定字符分隔。这样,您可以用逗号分割源字符串,并使用生成的字符串来构建输出。例如:
string source = "PCPU01,T2716,0.00,0.01,0.00,0.00";
string[] parts = source.Split(',');
StringBuilder result = new StringBuilder();
result.Append(parts[1]); // The second element in the array, i.e. T2716
result.Append(" ");
result.Append(parts[2]); // 0.00
... // And so on...
return result.ToString() // return a string, not a StringBuilder
答案 2 :(得分:0)
我希望这会有所帮助。您可能需要根据自己的需要进行调整。但这是一个更高级别的代码,可以让您全面了解从记事本中提取数据的信息。
DialogResult result = openFileDialog.ShowDialog();
Collection<Info> _infoCollection = new Collection<Info>();
Collection<string> listOfSubDomains = new Collection<string>();
string[] row;
string line;
// READ THE FILE AND STORE IT IN INFO OBJECT AND STORE TAHT INFO OBJECT IN COLLECTION
try
{
using (StreamReader reader = new StreamReader(openFileDialog.FileName))
{
while((line = reader.ReadLine()) != null)
{
Info _info = new Info();
row = line.Split(' ');
_info.FirstName = row[0];
_info.LastName = row[1];
_info.Email = row[2];
_info.Id = Convert.ToInt32(row[3]);
_infoCollection.Add(_info);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 3 :(得分:0)
感谢您的回答。我想要的是识别文本文件中的特定行并将行拆分为列。所以我可以通过调用GetLine方法来做到这一点:
string line15=GetLine(@"test.txt",15);
public string GetLine(string fileName, int line)
{
using (System.IO.StreamReader ssr = new System.IO.StreamReader("test.txt"))
//using (var ssr = new StreamReader("test.txt"))
{
for (int i = 1; i < line; i++)
ssr.ReadLine();
return ssr.ReadLine();
}
}
然后我使用分隔符(,)
分割了这一行答案 4 :(得分:0)
这是我在C#中的方法。它需要一个字符串输入(你可以从文本文件中获取)和一个你想要获得哪一行的int。然后它将给定分隔符char处的字符串分隔为一个列表,然后再读出该列表。如果给定的行号低于创建的列表的计数,则返回该条目。
public string GetLine(string multiline,int line)
{
List<string> lines = new List<string>();
lines = multiline.Split('\n').ToList<string>();
return lines.Count >= line ? lines[line] : "";
}