【问题标题】:How to split a string into substrings and store into a List - c#如何将字符串拆分为子字符串并存储到列表中 - c#
【发布时间】:2020-07-27 19:44:30
【问题描述】:

我需要将一个字符串拆分为多个子字符串并将这些子字符串存储到一个列表中。

这是我的初始字符串中存储的可能内容的示例:

  "{"Stocks": [{"APPLE-775121": false, "AMZN-007612": true, "GOLD-847571": true}]}"

初始字符串不断变化,其中可能是多个股票名称。我只需要提取这些项目并存储到字符串列表中:

    APPLE-775121
    AMZN-007612
    GOLD-847571

在解析字符串时遇到了一些麻烦,我是 C# 新手,不了解所有有用的字符串函数。

到目前为止,我所做的是将 InitialString 解析为一个新字符串(名为 ParsedString),其中包含:

  "APPLE-775121": false, "AMZN-007612": true, "GOLD-847571": true

我能否获得一些帮助来解析这个字符串的其余部分并将子字符串存储到一个列表中? 提前致谢!

【问题讨论】:

    标签: c# string list substring substr


    【解决方案1】:

    您首先要创建一个类来存放股票数据。从那里,您可以使用Newtonsoft's Json conversion utilitiesLINQ 来提取您的列表。我忘记了,但是有些项目模板实际上已经安装了 Newtonsoft 包,但如果默认情况下没有,你可以得到它here

    void Main()
    {
        var str = "{\"Stocks\": [{\"APPLE-775121\": false, \"AMZN-007612\": true, \"GOLD-847571\": true}]}";
        var obj = JsonConvert.DeserializeObject<StockContainer>(str);
        var stockList = obj.Stocks.SelectMany(dictEntry => dictEntry.Keys).ToList();
        Console.Write(stockList);  //this is what you want
    }
    
    public class StockContainer
    {
        public List<Dictionary<string, bool>> Stocks {get;set;}
    }
    

    【讨论】:

    • 问题是我从数据库中获取初始字符串,所以我无法控制初始化字符串。我无法添加您添加的那些反斜杠。如果不添加这些,它仍然可以工作吗?
    • @anasteele 它会起作用,反冲在这里只是为了逃避特殊字符:)
    • @MichałTurczyn 是正确的。假设这来自数据库,.NET CLR 将为您处理所有这些。我添加它们是因为我为了演示而对字符串进行了“硬编码”。
    【解决方案2】:

    如果您确定,该列表始终包含在 [] 中,并且项目名称不会包含任何 []{},你可以使用简单的string.Split:

    var str = "{\"Stocks\": [{\"APPLE-775121\": false, \"AMZN-007612\": true, \"GOLD-847571\": true}]}";
    var listOfItems = str.Split(new char[] { '[', ']', '}', '{' }, StringSplitOptions.RemoveEmptyEntries)[1];
    var extractedItems = listOfItems.Split(',').Select(item => item.Split(':')[0]).ToArray();
    

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 2014-03-21
      • 2019-04-16
      • 1970-01-01
      • 2016-08-26
      • 2014-12-20
      相关资源
      最近更新 更多