将 Char 列表转换为整数 C# 列表

  • 本文关键字:列表 整数 转换 Char c#
  • 更新时间 :
  • 英文 :


所以我一直在尝试将像这样的字符列表转换为[20,8,25,5,34,12]的整数列表。我目前正在这样做道路:

string fromJson = File.ReadAllText(Application.dataPath + "/JsonSaveTest.json");
List<int> temp = GetNumbers(fromJson).Select(c => int.Parse(c)).ToList();

然后

private List<string> GetNumbers(string input)
{
    List<char> temp = input.Where(c => char.IsDigit(c)).ToList();
    var toReturn = temp.Select(c => c.ToString()).ToList();      
    return toReturn;
}

但是它自己分隔每个数字,就像结果列表应该是 20 8 25 5 34 12,它实际上看起来像 2 0 8 2 5 5 3 4 1 2。

如果字符串采用您指定的格式(例如"[20,8,25,5,34,12]"(,您可以简单地使用 Newtonsoft.Json 包中的 JsonConvert:

var result = JsonConvert.DeserializeObject<List<int>>("[20,8,25,5,34,12]");

这是假设你想要一个整数列表,如你的问题中所述。如果需要数字字符串列表,请使用

var result = JsonConvert.DeserializeObject<List<string>>("[20,8,25,5,34,12]");

相反

给定您的示例列表:

"[20,8,25,5,34,12]"

最简单的方法是在卸下支架后将string拆开,然后使用其ToList()功能将arraystring.Split()中投射。

private List<string> GetNumbers(string input)
{
  string x = input.Replace("[", string.Empty).Replace("]",string.Empty); 
  return x.Split(',').ToList();
}

注意:与 JSON 相关的答案是"正确"的方式。 这更像是快速而肮脏的"任何字符串列表都可以"的方式。

下面拆分

字符串,然后分析整数:

var input = "[20,8,25,5,34,12]";   
public static int[] ParseNumbersList(string input) {
    const char valueSeperator = ',';
    var removeBrackets = input.Substring(1, input.Length-2);
    var parts = removeBrackets.Split(valueSeperator);
    return parts.Select(p => int.Parse(p)).ToArray();
}

.Net Fiddle

你选择每个单独的字符

List<char> temp = input.Where(c => char.IsDigit(c)).ToList();

您应该改用数组中的逗号来分隔数字,如下所示:

List<string> temp = input.Trim(new []{ '[', ']' }).Split(new []{ ',' }).ToList();

因此,删除括号,在逗号处拆分数组,这将为您提供单独的 JSON 数组元素。

请注意,使用库进行所有 JSON 解析可能是值得的,这是您应该考虑的事情。

最新更新