基本上,我正在尝试转换看似存储在字符串类型中的整数值数组。
[123,234,345,456] // example
当前,我正在执行以下操作以将字符串转换为List<int>
或int[]:
var intList = "[123,234,345,456]".Replace("[","").Replace("]","").Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).Tolist();
在(sort, add, remove)
上执行必需的操作list
,然后convert
返回string
:
string.Format("[{0}]", string.Join(",", intList));
但是这让我开始思考。我正在使用的数据看起来像JSON
。当然,必须有一种更直接的方法将converting
string
转换为array of integers
吗?
我研究了使用JArray.Parse(string)
中的Newtonsoft.Json.Linq
,但这不只是增加了一层复杂性,因为我现在正在处理JArray<JToken>
而不是标准的int[]
。
如果任何人都拥有更整洁的解决方案,而无需添加methods
,extensions
或libraries
,那么,如果您能分享您的知识,我将不胜感激。
答案 0 :(得分:19)
您是正确的-JSON 可以为您做到这一点:
using System;
using Newtonsoft.Json;
namespace Demo
{
class Program
{
static void Main()
{
string test = "[123,234,345,456]";
var result = JsonConvert.DeserializeObject<int[]>(test);
// This prints "123, 234, 345, 456"
Console.WriteLine(string.Join(", ", result));
string andBackAgain = JsonConvert.SerializeObject(result);
// This prints "[123,234,345,456]"
Console.WriteLine(andBackAgain);
}
}
}
答案 1 :(得分:0)
如果您打算用双引号解析数字,则
string input = @"[123,234,345,456]";
string pattern = @"\d+";
var result = Regex.Replace(input, pattern, "\"$&\"");
result.Dump();
//["123","234","345","456"]
或解析数组括号内的整个对象
string input = @"[123,234,345,456]";
string pattern = @"(\d+\s*,?\s*)+";
var result = Regex.Replace(input, pattern, "\"$&\"");
result.Dump();
//["123,234,345,456"]