【发布时间】:2019-02-09 12:11:32
【问题描述】:
我有一个看起来像这样的字符串:
random text 12234
another random text
User infos:
User name : John
ID : 221223
Date : 23.02.2018
Job: job1
User name : Andrew
ID : 378292
Date : 12.08.2017
Job: job2
User name : Chris
ID : 930712
Date : 05.11.2016
Job : job3
some random text
还有这个类:
class User
{
public string UserName { get; set; }
public string ID { get; set; }
public string Date { get; set; }
public string Job { get; set; }
public User(string _UserName, string _ID, string _Date, string _Job)
{
UserName = _UserName
ID = _ID;
Date = _Date;
Job = _Job;
}
}
我想创建一个包含该字符串信息的用户列表。
我试过这样做:
List<User> Users = new List<User>();
string Data = (the data above)
string[] lines = Data.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
List<string> UserNames = new List<string>();
List<string> IDs = new List<string>();
List<string> Dates = new List<string>();
List<string> Jobs = new List<string>();
foreach (var line in lines)
{
if (line.StartsWith("User name : "))
{
UserNames.Add(Line.Remove(0, 12));
}
if (Line.StartsWith("ID : "))
{
IDs.Add(Line.Remove(0, 5));
}
if (Line.StartsWith("Date : "))
{
Dates.Add(Line.Remove(0, 7));
}
if (Line.StartsWith("Job : "))
{
Jobs.Add(Line.Remove(0, 6));
}
}
var AllData = UserNames.Zip(IDs, (u, i) => new { UserName = u, ID = i });
foreach (var data in AllData)
{
Users.Add(new User(data.UserName, data.ID, "date", "job"));
}
但我只能使用此代码组合两个列表。此外,我为每个用户设置了超过 4 个值(上面的字符串只是一个简短的示例)。
有没有更好的方法?谢谢。
【问题讨论】:
-
字符串是json格式吗?
-
不,它只是纯文本。你可以看上面的例子。
-
欢迎来到 StackOverflow @asfdev991。请记住在问题本身中添加有关该问题的额外信息,以便未来的读者不必在 cmets 中寻找它;)
-
您是否从文件中读取它?条目之间总是有这个空行吗?
-
是的,条目之间总是有一个空行。而且字符串中还有其他文本,所以我应该忽略它。我已经更新了问题。
标签: c# string list class object