[英]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.