【问题标题】:Convert String to List - c#将字符串转换为列表 - c#
【发布时间】:2019-12-13 07:40:02
【问题描述】:

我有一个像 - "['2','4','5','1']" 这样的单个字符串的列表,每个字符都被计算在内,长度为 17。

现在我想将其解析为列表对象,例如 - ['2','4','5','1'],其长度将是 4 作为列表中元素的数量。

如何在 C# 中做到这一点?

可以不做基本的字符串操作吗?如果是那怎么办?

【问题讨论】:

  • list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<char>>("['2','4','5','1']");
  • var result = str.Split(',','[',']').Where(s => !string.IsNullOrEmpty(s)).ToList();
  • “基本字符串操作”是什么意思?您能否详细说明您想要实现的目标,特别是您已经尝试过的目标?我们不是来帮你思考的。你必须自己思考。但是,如果您遇到特定问题或遇到困难,我们可以为您提供帮助。
  • @SᴇM StringSplitOptions.RemoveEmptyEntries - 不知道性能是否有差异,但我宁愿使用该选项。
  • @Fildor 同意,在这种情况下 - var result = str.Split(new[] { ',','[',']' }, StringSplitOptions.RemoveEmptyEntries);

标签: c# arrays string list data-conversion


【解决方案1】:

没有基于字符串的操作

您的字符串值看起来像有效的 JSON 数组。

using Newtonsoft.Json;

var list = JsonConvert.DeserializeObject<List<char>>("['2','4','5','1']");

// => ['2','4','5','1']

如果您需要输出为整数,请将输出类型设置为整数列表,JSON 序列化程序会将其转换为整数。

var list = JsonConvert.DeserializeObject<List<int>>("['2','4','5','1']");

// => [2, 4, 5, 1]

转换为整数也会处理负值;)

var list = JsonConvert.DeserializeObject<List<int>>("['-2','4','-5','1']");

// => [-2, 4, -5, 1]

【讨论】:

【解决方案2】:

您可以尝试正则表达式LinqMatch所有整数并将它们(ToList())转换为List&lt;int&gt;

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

...

string str = "['2','4','5','1']";

var result = Regex
  .Matches(str, @"\-?[0-9]+")              // \-? for negative numbers
  .Cast<Match>()
  .Select(match => int.Parse(match.Value)) // int.Parse if you want int, not string
  .ToList();

【讨论】:

    【解决方案3】:

    通过, 尝试Split,然后使用Regex 仅获取数字:

    var str = "['2','4','5','1']".Split(new char[] {',' })
        .Select(s => Regex.Match(s, @"\d+").Value);
    

    或者感谢@Fildor

    var str = Regex.Matches("['2','4','5','1']", @"\d+").Cast<Match>()
        .Select(s=> s.Value);
    

    【讨论】:

    • 如果你仍然匹配正则表达式,为什么要先拆分?
    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多