如何在C#中获取和拆分一部分字符串?

亚当

我希望每个<div class="person"> { /*JSON stuff/* }对象都成为对象列表中的单独元素。它与其他html content(...html tags...混合在一起我有一个来自html文件的字符串:

...html tags...
<div class="person">
{
    "name":"Bob",
    "age":20,
    "color":"blue"
}
</div>
...html tags...
<div class="person">
{
    "name":"John",
    "age":30,
    "color":"green"
}
</div>
...html tags...

无法预测会有多少人。我认为我将使用Regex,Json或Substring。我的问题是这些人周围还有许多其他内容,我不知道将每个元素作为对象列表中的单独元素的最简单解决方案是什么。

例如,我有一个像这样的类:

class Person
{
    public string name {get;set;}
    public int age {get;set;}
}

我想List<Person>从此html上传列表。

约翰逊

看看是否有帮助...

using System;
using System.Linq;
using System.Text.RegularExpressions;

using Newtonsoft.Json;

namespace ConsoleApp1 {
    class Program {
        static void Main(string[] args) {

            // Just get your input loaded into a variable called input
            var input = @"
                <div class='person'>
                {
                    'name':'Bob',
                    'age':20,
                    'color':'blue'
                }
                </div>
                <div class='dog'>
                {
                    'name':'Jim',
                    'age':30,
                    'color':'green'
                }
                </div>
                <div class='person'>
                {
                    'name':'John',
                    'age':30,
                    'color':'green'
                }
                </div>
            ".Replace("'", "\"");

            Regex personContents = new Regex("<div class=\"person\">(.+?)</div>", RegexOptions.Singleline);
            var persons = personContents.Matches(input).Cast<Match>().Take(6).Select(x => JsonConvert.DeserializeObject<Person>(x.Groups[1].Value.Trim())).ToArray();
            var names = string.Join(",", persons.Select(x => x.name));
            Console.WriteLine($"names={names}");
        }

        class Person {
            public string name { get; set; }
            public int age { get; set; }
            //public string color { get; set; }
        }
    }
}

上面的代码显示“ Bob,John”。这不能解决过滤出重复项的问题,但是使用LINQ的Distinct()方法仅捕获唯一记录就足够容易了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中拆分并获取字符串的最后一部分

如何从C#中的URL获取子字符串或字符串的一部分

如何在C#中特定字符串出现之前获取字符串的第一部分

从C#中的字符串获取域的第一部分?

如何在JavaScript中获取字符串的最后一部分?

如何在 Oracle 中获取 JSON 字符串的一部分

如何在C中删除字符串的最后一部分

如何在C中打印字符串的一部分

C在字符串中获取一部分字符串

使用C#获取字符串的一部分

如何拆分字符串并返回字符串的一部分

如何使用C#从节点内部获取字符串的一部分

C#中的MSSQL查询,从字符串获取WHERE子句的一部分

如何在shell脚本中获取'/'分隔字符串的最后一部分

如何在Oracle中获取跟在特定单词之后的字符串的一部分

如何在Java中获取字符串的一部分并进行打印?

如何在C#中将字符串的一部分转换为小写

在C#中替换字符串的一部分?

在多维数组C#的一部分中搜索字符串

如何在r中重新排序和替换字符串的一部分?

如何在JavaScript中的“:”之前删除字符串的一部分?

如何在recyclerview中隐藏字符串的一部分?

如何在PHP中替换字符串的一部分?

如何在Java中检索字符串的一部分?

如何在JavaScript中删除字符串的最后一部分?

如何在python数组中查找字符串的一部分

如何在javascript中替换字符串的一部分

如何在laravel 5.2中仅显示字符串的一部分?

如何在python列表中删除字符串的一部分?