快速提问。我正在使用String.Join将数组转换为字符串。我遇到的一个小问题是,在数组中,一些索引位置将为空白。一个例子如下:
array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"
通过使用String.Join(“,”,array);,我将得到以下内容:
Firstcolumn ,, Thirdcolumn
注意额外的,。如何在字符串中删除额外的逗号,或者在使用String.Join时理想情况下不包含空索引?
答案 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);
}
}
}