在C#中获取重复字符串的一部分

问题描述 投票:0回答:2

提取字符串的一部分是一个常见问题,但此处的字符串内容例如'“ main \”:{\“ temp \”:'是重复的:

string test = "{\"cod\":\"200\",\"message\":0,\"cnt\":40,\"list\":[{\"dt\":1576810800,\"main\":{\"temp\":288.19,\"feels_like\":284.44,\"temp_min\":288.19,\"temp_max\":291.53,\"{\"dt\":1576821600,\"main\":{ \"temp\":283.97,\"feels_like\":281.56,\"temp_min\":283.97,\"temp_max\":286.47,\"pressure\":1007,\"sea_level\":1007,\"grnd_level\":997,\"humidity\":93,\"temp_kf\":-2.5},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderate rai\",\"icon\":\"10d\"}],\"clouds\":{\"all\":90},\"wind\"";

使用中

string s = test.Substring(test.IndexOf("\"main\":{\"temp\":") + 15);

我知道

288.19,"feels_like":284.44,,"temp_min":288.19,"temp_max":291.53,"{"dt":157682160
0,"main":{ "temp":283.97,"feels_like":281.56,"temp_min":283.97,"temp_max":286.47
,"pressure":1007,"sea_level":1007,"grnd_level":997,"humidity":93,"temp_kf":-2.5}
,"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],
"clouds":{"all":90},"wind"

而不是

288.19

任何提示,什么命令都可以帮助您?应该是可以适应'“ temp_max”'或'“ pressure”'的东西。

欢呼声

c# string parsing indexof
2个回答
0
投票

使用中

var regexGroups = Regex.Matches(test, "\"main\" ?: ?{ ?\"temp\" ?: ?(\\d+\\.\\d+)")
    .Select(x => x.Groups[1].Value);

您可以获得所有\"main\":{\"temp\":值。


0
投票
//classes.cs
public class RootObject
{
    public List<List> list { get; set; }
}

public class List
{
    public Main main { get; set; }
}

public class Main
{
    public double temp { get; set; }
}

//API client
using Newtonsoft.Json;

var object = JsonConvert.DeserializeObject<RootObject>(test); //test is JSON response as string 

foreach(item in list){
  var temp = item.main.temp;
}

//Hope it helps
© www.soinside.com 2019 - 2024. All rights reserved.