我有数千个文本文件,每个文件只包含一行文字。
任何单个文件都是这样的:
somevalue1|somevalue2|somevalue3|somevalue4|somevalue5
格式永远不会改变,从上面,您可以看到每个值如何用“|”分隔。并且每个文件中总有5个值。
有人可以帮我正确的方向吗?我不确定如何将每个值提取到一个单独的字符串中,例如:
string value1,value2,value3,value4,value5;
value1=somevalue1;
value2=somevalue2;
等等。
我希望这是有道理的。并感谢任何帮助
谢谢
答案 0 :(得分:10)
String.Split
为您做到了这一点:
string line = "somevalue1|somevalue2|somevalue3|somevalue4|somevalue5";
string [] parts = line.Split(new[] { '|' });
然后您可以从该数组中读取单独的值:
string value1 = parts[0];
string value2 = parts[1];
// and so on
现在我可能略微偏离主题,但我认为不同的值具有不同的含义,因此它们可以被视为表中的列?如果是这种情况,我可能有意义创建一个以更易被发现的形式公开这些值的类。让我们假设五个值是名字,姓氏,公司,最喜欢的颜色和名称宠物独角兽。然后你可以创建以下类:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public string FavoriteColor { get; set; }
public string NameOfPetUnicorn { get; set; }
}
...然后你会把这行中的值放到像这样的人身上:
private static Person GetPerson(string line)
{
string [] parts = line.Split('|'); // as per Dan Tao's suggestion
return new Person {
FirstName = parts[0],
LastName = parts[1],
Company = parts[2],
FavoriteColor = parts[3],
NameOfPetUnicorn = parts[4]
};
}
答案 1 :(得分:0)
String.Split允许您在特定字符(或者需要的字符集)上拆分字符串。它返回string[]
个字符串值。
答案 2 :(得分:0)
如果格式始终一致,则应将文件内容读取到文件末尾为一个字符串,然后使用String.split()分隔成带有分隔字符的组件字符串(在本例中为| )。
string.split http://msdn.microsoft.com/en-us/library/b873y76a.aspx
答案 3 :(得分:0)
// for each file
string contents = ""; // read in the whole file into this variable
foreach (string line in contents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
{
string[] values = line.Split('|');
// do something with the values, accessing the first one as values[0] etc
}
答案 4 :(得分:0)
最简单的方法是字符串拆分:
string input =“somevalue1 | somevalue2 | somevalue3 | somevalue4 | somevalue5”; string [] someValues = input.Split('|');
答案 5 :(得分:0)
如果您正在寻找一些通用解决方案,可以尝试FileHelpers。
FileHelpers是一个免费且易于使用的.NET库,用于从文件,字符串或流中的固定长度或分隔记录中导入/导出数据。
使用FileHelpers
,您可以将文件记录定义如下:
[DelimitedRecord ("|")]
public class DataFileRecord
{
public string SomeValue1 { get; set; }
public string SomeValue2 { get; set; }
public string SomeValue3 { get; set; }
public string SomeValue4 { get; set; }
public string SomeValue5 { get; set; }
}
/*reading section*/
var engine = new DelimitedFileEngine<DataFileRecord> ();
DataFileRecord[] records = engine.ReadFile (path);