如何在C#中获取和拆分字符串的一部分?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中获取和拆分字符串的一部分?相关的知识,希望对你有一定的参考价值。
我想每个<div class="person"> { /*JSON stuff/* }
都是一个对象列表中的单独元素。它与其他html内容(...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;}
}
我想从这个HTML上传List<Person>
列表。
答案
看看这有帮助......
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()方法只需抓取唯一记录就足够了。
以上是关于如何在C#中获取和拆分字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章