c# 正则表达式?来自文件的文本字符串并排序到可搜索数组中?

标签 c# regex

我有文件中的以下文本:

{"players":[{"i":11,"p":0,"a":3186,"n":"IanHx","f":1,"ps":0,"pd":0,"bc":0},{"i":12,"p":0,"a":115,"n":"LoZtamnik","f":1,"ps":0,"pd":0,"bc":0},{"i":58,"p":0,"a":156,"n":"Mr701","f":2,"ps":0,"pd":0,"bc":0},{"i":59,"p":0,"a":156,"n":"B0NE4","f":2,"ps":0,"pd":0,"bc":0},{"i":64,"p":0,"a":324,"n":"5teveJ","f":1,"ps":0,"pd":0,"bc":0}],[.......

我想做的是解析文本,最终得到 {...} 之间的每一位数据的数组

所以最终结果会是这样的:

i=11
p=0
a=3186
n=IanHx
f=1
ps=0
pd=0
bc=0

然后我可以将这些存储在数据库中

到目前为止我有这样的东西:

string contents = System.IO.File.ReadAllText("local text file"); //load string contents with text file
Regex regex1 = new Regex("\"players\":\\[(?<players>.*)\\]"); //find the players section "players":[.......]
Match match1 = regex1.Match(contents); //load match1    
Regex regex2 = new Regex("{(?<player>([^}]*))}"); // then break down each player {....}
MatchCollection match2 = regex2.Matches(match1.Groups["players"].Value); //load match2 with each player

然后我在尝试以某种方式拆分匹配字符串 [] 时遇到困难,并且查看它可能过于复杂了?

任何指向更简单的数据解析解决方案的指针

谢谢

最佳答案

你最好尝试用 Json.Net 反序列化它来自 NuGet

定义一些类来匹配你的文件结构:

public class Root
{
    public List<Something> players {get; set;}
}

public class Something
{
    public string i {get; set;}
    public string p {get; set;}
    public string a {get; set;}
    public string n {get; set;}
    public string f {get; set;}
    public string ps {get; set;}
    public string pd {get; set;}
    public string bc {get; set;}
}

使用 Json.Net 处理:

var json = @"{""players"":[{""i"":11,""p"":0,""a"":3186,""n"":""IanHx"",""f"":1,""ps"":0,""pd"":0,""bc"":0},{""i"":12,""p"":0,""a"":115,""n"":""LoZtamnik"",""f"":1,""ps"":0,""pd"":0,""bc"":0},{""i"":58,""p"":0,""a"":156,""n"":""Mr701"",""f"":2,""ps"":0,""pd"":0,""bc"":0},{""i"":59,""p"":0,""a"":156,""n"":""B0NE4"",""f"":2,""ps"":0,""pd"":0,""bc"":0},{""i"":64,""p"":0,""a"":324,""n"":""5teveJ"",""f"":1,""ps"":0,""pd"":0,""bc"":0}]}";

var data = JsonConvert.DeserializeObject<Root>(json);

关于c# 正则表达式?来自文件的文本字符串并排序到可搜索数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30560910/

相关文章:

c# - ASP.NET WebForms - 在当前 HttpContext 中创建和使用新 session

c# - 复选框的不确定状态

正则表达式上的 Python TypeError

python - 文件路径上的正则表达式用于匹配不以某些单词开头的文件名

JavaScript/jQuery : extract phone numbers from string

C# - 获取列表中的倒数第二个项目

c# - 使用 Linq 创建对象列表与创建字典的性能比较?

c# - 使用 LINQ 分隔 DataTable 的列值

java - java中用正则表达式替换字符串

Python Pandas - 替换与正则表达式匹配的单元格值