【问题标题】:Copy String byte Array contents to another array and Prefix 0 to single digits in C#将字符串字节数组内容复制到另一个数组,并将前缀 0 复制到 C# 中的单个数字
【发布时间】:2018-12-01 11:24:47
【问题描述】:

我有一个名为“string_array_packet”的字符串数组,其中包含

FA,11,1,4,90,6C,E7,72,0,0,0,8,80,0,8,80,7B,

现在我需要复制数组的第一个和最后一个索引之间的内容并将其存储在另一个数组中,然后需要在单个数字前加上 0

11,1,4,90,6C,E7,72,0,0,0,8,80,0,8,80,

到目前为止我所做的是

var sourceStartIndex = 1;
var destinationLength = string_array_packet.Length - 2;
Console.WriteLine(string_array_packet.Length);
Console.WriteLine(destinationLength);
var destinationStartIndex = 0;
var destination = new string[destinationLength];
Array.Copy(string_array_packet, sourceStartIndex, 
    destination, destinationStartIndex, destinationLength); 

不知道在此之后如何进行。

【问题讨论】:

  • “需要在单个数字前加上 0”是什么意思?
  • 需要将1替换为01
  • 初始数据包是字符串“FA,11,1,4,90,6C,E7,72,0,0,0,8,80,0,8,80,7B,”还是字节数组?
  • @ThymiosK 我会说这是一个string[],因为 OP 说“我有一个名为“string_array_packet”的字符串数组”
  • 公共静态字符串[] string_array_packet;

标签: c# arrays string


【解决方案1】:

使用 Linq 可以更轻松地完成此操作(需要using System.Linq):

var sourceStartIndex = 1;
var destinationLength = string_array_packet.Length - 2;

var strings = string_array_packet.Skip(sourceStartIndex)
                                 .Select(x => x.Length == 1 ? "0" + x :x)
                                 .Take(destinationLength)
                                 .ToArray();

或者,如果您不熟悉 Enumerable 方法,请添加以下命令式方法来完成您的代码:

for (int i = 0; i < destination.Length; i++)
    if (destination[i].Length == 1)
        destination[i] = "0" + destination[i];

【讨论】:

  • 上述解决方案有效,但它添加了最后一个元素。我不需要最后一个元素
  • @Mishty 然后将目标长度从string_array_packet.Length - 2 更改为string_array_packet.Length - 3
猜你喜欢
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2010-10-27
  • 2015-08-22
  • 2015-06-09
  • 2011-07-09
相关资源
最近更新 更多