我很感激在一项棘手的任务中提供一些帮助。
我在文本文件中收到一个长长的字符串,如下所示:
{"place":"1","points":"1783","pseudo":"player1"},
{"place":"2","points":"1675","pseudo":"player34"},
{"place":"3","points":"1671","pseudo":"player45"},
所以这是一个单一的字符串,大约有3000次相同的模式粘在一起。 (有3000名球员)
我需要解析这个字符串以填充像这样的简单结构
public struct RankedPlayer
{
public string Pseudo;
public int Place;
public int Point;
}
我找不到一个简单的方法来做到这一点。我开始与RegEx斗争,但我不知道它是否是正确的方法。
答案 0 :(得分:2)
好像你正在处理一个简单的JSON字符串。 使用JSON牧师james.newtonking.com - json,只需将它们作为您的对象......
以下是一个例子:
// Having this:
public struct RankedPlayer
{
public string Pseudo;
public int Place;
public int Point;
}
// With this input
{"place":"1","points":"1783","pseudo":"player1"},
{"place":"2","points":"1675","pseudo":"player34"},
{"place":"3","points":"1671","pseudo":"player45"},
// You should do something like:
string input = // your input;
var list_of_players = input.Split(',');
foreach (var player in list_of_players) {
RankedPlayer r = JsonConvert.DeserializeObject<RankedPlayer>(player);
// Do something with it.
}
所以,只需使用您的Player
结构。
修改强>
您可以将以下内容用于正则表达式:{.*?}
匹配。基本匹配大括号之间的所有内容,以非贪婪的方式(?
之后的.*
)。
答案 1 :(得分:0)
您需要使用JavaScriptSerializer试试:
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RankedPlayer> myData = serializer.Deserialize<List<RankedPlayer>>(strData);