【问题标题】:Better way to converting string [123,234,...] to List<int> and back将字符串 [123,234,...] 转换为 List<int> 并返回的更好方法
【发布时间】:2019-02-25 08:42:18
【问题描述】:

基本上,我正在尝试转换似乎是存储在字符串类型中的整数值数组。

[123,234,345,456] // example

目前,我正在执行以下操作以将字符串转换为 List&lt;int&gt;int[]:

var intList = "[123,234,345,456]".Replace("[","").Replace("]","").Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).Tolist();

listconvert 上执行所需的操作(sort, add, remove) 将其返回到string

string.Format("[{0}]", string.Join(",", intList));

但这让我开始思考。我正在使用的数据看起来像JSON。当然必须有更直接的方式将convertingstring 转换为array of integers

我研究过使用Newtonsoft.Json.Linq 中的JArray.Parse(string),但这不只是增加了一层额外的复杂性,因为我现在处理的是JArray&lt;JToken&gt;,而不是标准的int[]

如果有人有不涉及添加 methodsextensionslibraries 的更简洁的解决方案,如果您能分享您的知识,我将不胜感激。

【问题讨论】:

  • 预期输出是多少?
  • 你也可以使用正则表达式,
  • 如果您的输入真的那么简单,您可以使用正则表达式,但如果您的输入输出格式发生变化,这很快就会变得非常麻烦 - 例如如果你有双打而不是整数。
  • JsonDataContractSerializer 可以这样做:docs.microsoft.com/en-us/dotnet/api/…

标签: c# .net json.net


【解决方案1】:

你是对的 - 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);
        }
    }
}

【讨论】:

  • 正是我正在寻找但无法生产的东西。谢谢。
【解决方案2】:

如果您打算用双引号解析数字,那么

    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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多