C# 加入智能分离器

C# 加入智能分离器,c#,.net,string,join,C#,.net,String,Join,当然,写起来很容易,但是在C#2010中,是否有一种内置的联接(或类似的)方法,只有在上一个和下一个元素都是非null和非空的情况下才会添加分隔符 换句话说,SmartJoin(“,”,“Hood”,“Robin”)会产生“Hood,Robin”,但是SmartJoin(“,”,“Robin Hood”,string.Empty)只会产生“Robin Hood”。这个怎么样: public void SmartJoin(string separator, params string[] Item

当然,写起来很容易,但是在C#2010中,是否有一种内置的联接(或类似的)方法,只有在上一个和下一个元素都是非null和非空的情况下才会添加分隔符

换句话说,
SmartJoin(“,”,“Hood”,“Robin”)
会产生“Hood,Robin”,但是
SmartJoin(“,”,“Robin Hood”,string.Empty)
只会产生“Robin Hood”。

这个怎么样:

public void SmartJoin(string separator, params string[] Items)
{
   String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}
这个怎么样:

public void SmartJoin(string separator, params string[] Items)
{
   String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}

没有您需要的内置联接。

没有您需要的内置联接。

这里是使用linq的“聚合”方法的另一种方法

string result = new List<string>() { "Hood", "Robin" }.Aggregate(SmartJoin());
string result2 = new List<string>() { "Robin Hood", "" }.Aggregate(SmartJoin());

private static Func<string, string, string> SmartJoin()
{
  return (x, y) => x + (string.IsNullOrEmpty(y) ? "" : ", " + y);
}
stringresult=newlist(){“Hood”,“Robin”}.Aggregate(SmartJoin());
string result2=new List(){“罗宾汉”,“”}.Aggregate(SmartJoin());
私有静态Func SmartJoin()
{
return(x,y)=>x+(string.IsNullOrEmpty(y)?“”:“,”+y);
}
这里是使用linq的“聚合”方法的另一种方法

string result = new List<string>() { "Hood", "Robin" }.Aggregate(SmartJoin());
string result2 = new List<string>() { "Robin Hood", "" }.Aggregate(SmartJoin());

private static Func<string, string, string> SmartJoin()
{
  return (x, y) => x + (string.IsNullOrEmpty(y) ? "" : ", " + y);
}
stringresult=newlist(){“Hood”,“Robin”}.Aggregate(SmartJoin());
string result2=new List(){“罗宾汉”,“”}.Aggregate(SmartJoin());
私有静态Func SmartJoin()
{
return(x,y)=>x+(string.IsNullOrEmpty(y)?“”:“,”+y);
}

诺瑟尔德夫是对的,严格来说,没有内置这样的方法,但@CodingGorila solution仍然帮助了我,应该由我的帐户添加到下一个.NET版本中,尽管我仍然将其转换为静态函数,并让它返回字符串,以使其在我的情况下工作:

public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}
public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)));
}

NotherDev是对的,严格地说,没有内置这样的方法,但@CodingGorila solution仍然帮助了我,应该由我的帐户添加到下一个.NET版本中,尽管我仍然将其转换为静态函数,并让它返回字符串以使其在我的情况下工作:

public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}
public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)));
}

NotherDev是对的,严格地说,没有内置这样的方法,但@CodingGorila solution仍然帮助了我,应该由我的帐户添加到下一个.NET版本中,尽管我仍然将其转换为静态函数,并让它返回字符串以使其在我的情况下工作:

public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}
public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)));
}

NotherDev是对的,严格地说,没有内置这样的方法,但@CodingGorila solution仍然帮助了我,应该由我的帐户添加到下一个.NET版本中,尽管我仍然将其转换为静态函数,并让它返回字符串以使其在我的情况下工作:

public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)).ToArray());
}
public static string SmartJoin(string separator, params string[] Items) {
    return String.Join(separator, Items.Where(x=>!String.IsNullOrEmpty(x)));
}

SmartJoin(“,”,“First”,String.Empty,“Second”)的输出是什么?
?在这种情况下,它应该是“First,Second”。对不起,我的措辞有误导性…我只想到了两项列表。
SmartJoin(“,”,“First”,String.Empty,“Second”)的输出是什么?
?在这种情况下,它应该是“First,Second”。很抱歉,我的措辞有误导性……我只想到了两项清单。问题不是要实现它,而是要指出现有的框架方法来实现它。很好的一点,今天我的阅读技能再次让我失望。我想该小睡一会儿了!问题不是要实现它,而是要指出现有的框架方法可以做到这一点。很好的一点是,今天我的阅读技能再次让我失望。我想该小睡一会儿了!谢谢,我也是这么想的。谢谢,我也是这么想的。