簡體   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