繁体   English   中英

将字符串转换为列表 - C#

[英]Convert String to List - c#

我有一个列表作为单个字符串,例如 - "['2','4','5','1']"并且它的长度为 17,因为每个字符都被计算在内。

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

我怎样才能在 C# 中做到这一点?

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

不基于字符串操作

您的字符串值看起来像有效的 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]

尝试Split by ,然后使用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);

您可以尝试使用正则表达式LinqMatch所有整数并将它们( ToList() )转换为List<int>

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM