首页 > 解决方案 > 仅在 float[] 样本数组的末尾删除或修剪零 0

问题描述

我是 C# 的新手,我想知道是否有一个函数可以删除浮点数组末尾的特定值 (0)?

例如:

float[] samples = {0.0, 4.0, 2.5, ..., 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

通话后,我希望我的样品是:

samples == {0.0, 4.0, 2.5, ..., 2.0}

谢谢您的帮助

标签: c#arraystrim

解决方案


我将从找到最终的非零索引开始:

int i = samples.Length - 1;
for( ; i >= 0; i--)
    if(samples[i] != 0.0F) break;

然后我要么复制那个子集(包括0- i),要么为了避免分配,我会使用 aSpan<T>将自己限制在该部分而不创建新数组:

var span = new Span<float>(samples, 0, i + 1);

推荐阅读