所以我一直在尝试将像这样的字符列表转换为[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()
功能将array
从string.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 解析可能是值得的,这是您应该考虑的事情。