从c#中的数组中删除最后一个字符

时间:2016-06-01 07:49:47

标签: c# arrays linq

我有一个数组,它将19个记录带到数组中,如下所示

[![阵列快照] [1]] [1]

我的最后一个值是""

我想删除它。

这是我在array

中声明并获取值的地方
string[] arrS = hidRateA.Value.Split(new char[] { ',' });

请告诉我如何从数组中删除最后一个值。

4 个答案:

答案 0 :(得分:2)

如果只有最后一项为空,您可以在分割字符串之前修剪最后一个逗号,

string[] arrS = hidRateA.Value.TrimEnd(',').Split(new char[] { ',' });

答案 1 :(得分:2)

您可以指定StringSplitOptions.RemoveEmptyEntries

hidRateA.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

另请注意,根据定义," "(空格)为空,因此不会从结果数组中删除它。

如果你有空白区域,你可以使用下面的代码来过滤空格。

hidRateA.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
            .Where(x => !string.IsNullOrWhiteSpace(x))
            .Select(s => s.Trim());

答案 2 :(得分:2)

如果您知道最后一项永远是空的并且您不需要检测到它,那么您可以“接受”。

var result=arr.Take(arr.Length-1);

答案 3 :(得分:0)

此代码几乎完全符合您在问题中所要求的内容:

void Main()
{
    string firstTest = "1,2,3,"; // ends with a comma
    string secondTest = "a,b,c"; // ends with a character

    string[] firstArray = CreateArray(firstTest);
    PrintArray(firstArray);

    Console.WriteLine();

    string[] secondArray = CreateArray(secondTest);
    PrintArray(secondArray);
}

string[] CreateArray(string str)
{
    string[] array = str.Split(',');
    return array.Where((s, i) =>  // return only those cells in the array where
        i < array.Length - 1 ||   // it's not the last character, or
        s != string.Empty)        // it's not empty
        .ToArray();               // in array form
}

void PrintArray(string[] array)
{
    for (int i = 0; i < array.Length; i++)
    {
        Console.WriteLine("array[{0}] = '{1}'", i, array[i]);
    }
}

但是你没有告诉我们你为什么要做你正在做的事情。你真的只想删除最后一项,如果它是空的吗?如果您只想删除任何空项,那么str.Split(',', StringSplitOptions.RemoveEmptyEntries)将更适合您。