我正在使用String.Join
将一个数组转换为字符串。我的一个小问题是,在数组中有些索引位置是空的。以下是一个示例:
array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"
通过使用 String.Join(",", array);,我将得到以下结果:
第一列,,第三列
请注意多余的逗号,.
如何从字符串中删除额外的逗号,或者在使用 String.Join 时理想情况下不包括空索引?
我正在使用String.Join
将一个数组转换为字符串。我的一个小问题是,在数组中有些索引位置是空的。以下是一个示例:
array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"
通过使用 String.Join(",", array);,我将得到以下结果:
第一列,,第三列
请注意多余的逗号,.
如何从字符串中删除额外的逗号,或者在使用 String.Join 时理想情况下不包括空索引?
试着这样做 :):
var res = string.Join(",", array.Where(s => !string.IsNullOrEmpty(s)));
这将仅连接非null
或""
的字符串。
使用LINQ过滤空项后再进行连接是一个简单的解决方案。
// .net 3.5
string.Join(",", array.Where(item => !string.IsNullOrEmpty(item)).ToArray());
在.NET 4.0中,你也可以使用string.IsNullOrWhiteSpace
,如果你想过滤掉空白或仅由空格字符组成的项目(请注意,在这种情况下,你不必调用ToArray
)。// .net 4.0
string.Join(",", array.Where(item => !string.IsNullOrWhiteSpace(item)));
var joinedString = String.Join(",", array.Where(c => !string.IsNullOrEmpty(c));
扩展方法:
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();
}
o is string && !string.IsNullOrEmpty((string)o)
部分。 - bernhofString.Join(",", array.Where(w => !string.IsNullOrEmpty(w));
正则表达式解决方案:
yourString = new Regex(@"[,]{2,}").Replace(yourString, @",");
string.Join(",", Array.FindAll(array, a => !String.IsNullOrEmpty(a)));
简单的扩展方法
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);
}
}
}
使用方法:
var str = ".".Join(true, "a", "b", "", "c");
//or
var arr = new[] { "a", "b", "", "c" };
str = ".".Join(true, arr);
string.Join(",", string.Join(",", array).Split({","}, StringSplitOptions.RemoveEmptyEntries));
v('_)V