使用String.Join将数组转换为字符串后从字符串中删除多余的逗号(C#)

时间:2010-10-07 12:56:57

标签: c# string join

快速提问。我正在使用String.Join将数组转换为字符串。我遇到的一个小问题是,在数组中,一些索引位置将为空白。一个例子如下:

array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"

通过使用String.Join(“,”,array);,我将得到以下内容:

  

Firstcolumn ,, Thirdcolumn

注意额外的,。如何在字符串中删除额外的逗号,或者在使用String.Join时理想情况下不包含空索引?

9 个答案:

答案 0 :(得分:84)

试试这个:):

var res = string.Join(",", array.Where(s => !string.IsNullOrEmpty(s)));

这只会加入不是null""的字符串。

答案 1 :(得分:34)

一个简单的解决方案是使用linq,在加入之前过滤掉空项目。

// .net 3.5
string.Join(",", array.Where(item => !string.IsNullOrEmpty(item)).ToArray());

在.NET 4.0中,如果您还想过滤掉空白或仅包含空白字符的项目,您也可以使用string.IsNullOrWhiteSpace(请注意,在.NET 4.0中您不必使用在这种情况下请致电ToArray

// .net 4.0
string.Join(",", array.Where(item => !string.IsNullOrWhiteSpace(item)));

答案 2 :(得分:3)

您可以使用linq删除空字段。

var joinedString = String.Join(",", array.Where(c => !string.IsNullOrEmpty(c));

答案 3 :(得分:1)

扩展方法:

public static string ToStringWithoutExtraCommas(this object[] array)
{
    StringBuilder sb = new StringBuilder();
    foreach (object o in array)
    {

        if ((o is string && !string.IsNullOrEmpty((string)o)) || o != null)
            sb.Append(o.ToString()).Append(",");
    }

    sb.Remove(sb.Length - 1, 1);

    return sb.ToString();
}

答案 4 :(得分:1)

正则表达式解决方案:

yourString = new Regex(@"[,]{2,}").Replace(yourString, @",");

答案 5 :(得分:1)

String.Join(",", array.Where(w => !string.IsNullOrEmpty(w));

答案 6 :(得分:0)

string.Join(",", Array.FindAll(array, a => !String.IsNullOrEmpty(a)));

这个怎么样?与LINQ解决方案相比的缺点和优点?至少它更短。

答案 7 :(得分:0)

string.Join(",", string.Join(",", array).Split({","}, StringSplitOptions.RemoveEmptyEntries));

V( '_')V

答案 8 :(得分:0)

简单的扩展方法

constexpr std::tuple<int, int> ret2 () {
    int a = 1;
    int b = 2;
    return std::make_tuple(a, b);
}

constexpr int ret1 () {
    constexpr auto t = ret2();
    return std::get<0>(t) + std::get<1>(t);
}

constexpr auto tmp = ret1();

用法:

namespace System
{
    public static class Extenders
    {
        public static string Join(this string separator, bool removeNullsAndWhiteSpaces, params string[] args)
        {
            return removeNullsAndWhiteSpaces ? string.Join(separator, args?.Where(s => !string.IsNullOrWhiteSpace(s))) : string.Join(separator, args);
        }
        public static string Join(this string separator, bool removeNullsAndWhiteSpaces, IEnumerable<string> args)
        {
            return removeNullsAndWhiteSpaces ? string.Join(separator, args?.Where(s => !string.IsNullOrWhiteSpace(s))) : string.Join(separator, args);
        }
    }
}