【问题标题】:How to convert boxed two dimensional string to 2 dimensional integer array and viceversa in c# [closed]如何在c#中将盒装二维字符串转换为二维整数数组,反之亦然[关闭]
【发布时间】:2015-05-21 06:02:49
【问题描述】:

我有一个二维数组的字符串,我需要将这些二维字符串转换为整数数组。 示例:

String temp ="[[0xFF008041, 0x24008086, 0x00000000, 0x00000000,0x0008383A]]".

我需要二维字符串值到二维整数数组,反之亦然

【问题讨论】:

  • 好吧,在这种情况下,你只有一个“内部”数组——它会一直这样,还是有时是[[1, 2, 3], [4, 5, 6]]?听起来基本上你需要进行字符串操作。我最初将外部数组拆分为内部数组的字符串,然后分别解析每个字符串。
  • 这是您要解析的 json 吗?你试过什么?
  • 对我来说看起来像 JSON...可能使用 JSON 解析器而不是创建二维数组会起作用 - 但很难看出你到底有什么问题。
  • 如何将字符串“[[2,3],[4,5],[3,4]]”转换为二维整数数组。
  • 虽然我同意这个问题可以而且应该问得更好,但我认为它不会太宽泛。

标签: c# .net-2.0


【解决方案1】:

试试这个

      static void Main(string[] args)
        {
            String temp = "[[0xFF008041, 0x24008086, 0x00000000, 0x00000000,0x0008383A]]";
            temp = temp.Replace("[", "");
            temp = temp.Replace("]", "");
            string[] tempArray = temp.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
            uint[] tempIntArray = tempArray.Select(x => FromHex(x)).ToArray();
        }
        static uint FromHex(string value)
        {
            uint results;
            uint.TryParse(value.Substring(2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out results);
            return results;
        }​

【讨论】:

  • Can't use Linq in .net 2.0...阅读问题的标签。
【解决方案2】:

好吧,因为它是.Net 2.0,所以你不能使用更现代版本的好处,例如Linq,我建议使用Splitfor循环、TrimConvert

注意 #1: 我假设字符串中的数字始终是十六进制数字。

注意 #2:我返回的是锯齿状数组而不是多维数组,因为您不能强制字符串中的所有内部数组都具有相同数量的元素。 p>

String temp = "[[0xFF008041, 0x24008086, 0x00000000, 0x00000000,0x0008383A], [0x0008, 0x0034B]]";

int[][] ConvertStringToJaggedArray(String input)
{
    String[] Separator = { "],[", "], [", "] ,[" };
    String[] OuterArray = input.Split(Separator, StringSplitOptions.RemoveEmptyEntries);
    int[][] TargetArray = new int[OuterArray.Length][];
    string HexString;
    for (int i = 0; i < OuterArray.Length; i++)
    {
        String[] InnerArray = OuterArray[i].Split(',');
        TargetArray[i] = new int[InnerArray.Length];
        for (int j = 0; j < InnerArray.Length; j++ )
        {
            HexString = InnerArray[j].Trim(" []".ToCharArray());
            TargetArray[i][j] = Convert.ToInt32(HexString, 16);
        }
    }
    return TargetArray;
}

【讨论】:

  • 这不能回答你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2019-01-23
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多