admin管理员组

文章数量:1033172

c# String.Join 方法忽略 null 和空字符串

在 C# 中,String.Join 方法是用于将数组或集合中的元素连接成一个字符串的静态方法。

代码语言:javascript代码运行次数:0运行复制
public static string Join(string separator, params object[] values);

但是这个方法在数组中的元素有 null 或者空字符串时,分段也不会被跳过:

代码语言:javascript代码运行次数:0运行复制
var temp = new string[] { "A", null, "B", "C", string.Empty, "D", null, null, "E", "F" };
var ret = String.Join("/", temp);
Console.WriteLine(ret);
//将会输出:A//B/C//D///E/F

如果想要跳过 null 和空字符串,一个简单的办法是使用 Linq 进行过滤:

代码语言:javascript代码运行次数:0运行复制
var temp = new string[] { "A", null, "B", "C", string.Empty, "D", null, null, "E", "F" };
var ret = String.Join("/", temp.Where(f => !string.IsNullOrWhiteSpace(f)));
Console.WriteLine(ret);
//将会输出:A/B/C/D/E/F

同时,一个无需使用 Linq 的方法如下:

代码语言:javascript代码运行次数:0运行复制
public static string Join(string separator, string[] value)
{
    int s = 0;
    for (var v = 0; v < value.Length; v++)
    {
        string str = value[v];
        if (!string.IsNullOrWhiteSpace(str))
        {
            value[s] = str;
            s++;
        }
    }
    if (s <= 0) return string.Empty;
    var ret = String.Join(separator, value, 0, s);
    return ret;
}

该方法避免了使用 Linq 但在方法内部修改了数组,使用时需要注意。

c# String.Join 方法忽略 null 和空字符串

在 C# 中,String.Join 方法是用于将数组或集合中的元素连接成一个字符串的静态方法。

代码语言:javascript代码运行次数:0运行复制
public static string Join(string separator, params object[] values);

但是这个方法在数组中的元素有 null 或者空字符串时,分段也不会被跳过:

代码语言:javascript代码运行次数:0运行复制
var temp = new string[] { "A", null, "B", "C", string.Empty, "D", null, null, "E", "F" };
var ret = String.Join("/", temp);
Console.WriteLine(ret);
//将会输出:A//B/C//D///E/F

如果想要跳过 null 和空字符串,一个简单的办法是使用 Linq 进行过滤:

代码语言:javascript代码运行次数:0运行复制
var temp = new string[] { "A", null, "B", "C", string.Empty, "D", null, null, "E", "F" };
var ret = String.Join("/", temp.Where(f => !string.IsNullOrWhiteSpace(f)));
Console.WriteLine(ret);
//将会输出:A/B/C/D/E/F

同时,一个无需使用 Linq 的方法如下:

代码语言:javascript代码运行次数:0运行复制
public static string Join(string separator, string[] value)
{
    int s = 0;
    for (var v = 0; v < value.Length; v++)
    {
        string str = value[v];
        if (!string.IsNullOrWhiteSpace(str))
        {
            value[s] = str;
            s++;
        }
    }
    if (s <= 0) return string.Empty;
    var ret = String.Join(separator, value, 0, s);
    return ret;
}

该方法避免了使用 Linq 但在方法内部修改了数组,使用时需要注意。

本文标签: c StringJoin 方法忽略 null 和空字符串