[英]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);
您可以尝试使用正则表达式和Linq来Match
所有整数并将它们( 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.