【问题标题】:Package 3 chars of Array into an integer C#将 Array 的 3 个字符打包成整数 C#
【发布时间】:2025-12-09 17:55:02
【问题描述】:

所以,我有一个包含一堆数字的数组。我想总是取其中的 3 个字符并从中取出一个整数。我还没有在这方面找到任何东西。 这是一个例子:

string number = "123456xyz";

字符串是我拥有的,这些整数是我想要的

int goal1 = 123;
int goal2 = 456;
int goaln = xyz;

它应该遍历所有字符并始终将它们分成三个一组。我认为 foreach() 会帮助我,但我不太确定该怎么做。

【问题讨论】:

  • char 是有效的Int16 这就是为什么3 char 应该是Int48(.Net 没有这种类型);所以在一般情况下,您不能将 3 个 chars 打包成单个 int(即 Int32),但可以打包成 longInt64
  • 您可以使用 for 循环遍历字符串 chars 并对当前索引进行取模,以确定您是否还有 3 个

标签: c# arrays string char integer


【解决方案1】:

类似这样的:

var goals = new List<int>();
for (int i = 0; i + 2 < number.Length; i += 3)
{
  goals.Add(int.Parse(number.Substring(i,3)));
}

这没有错误检查,但它显示了大致轮廓。 Foreach 不是一个很好的选择,因为当您想一次查看三个字符时,它会一次遍历一个字符。

【讨论】:

    【解决方案2】:
    var numbers = (from Match m in Regex.Matches(number, @"\d{3}")
        select m.Value).ToList();
    
    var goal1 = Convert.ToInt32(numbers[0]);
    var goal2 = Convert.ToInt32(numbers[1]);
    ...
    

    【讨论】: