请问 List 有类似Js中Array的Join方法吗?

shui0rong 2011-03-11 10:53:25
在线等待~~谢谢。。
...全文
482 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyz985 2011-03-11
  • 打赏
  • 举报
回复

namespace sys{
static class DataExt{
#region JoinText
/// <summary>
/// 枚举器以分隔符连接
/// </summary>
/// <param name="ienum">枚举器</param>
/// <param name="joinChar">分隔符</param>
/// <param name="bSkipEmpty">是否跳过枚举中空的项目</param>
/// <returns>合并后的字符串</returns>
public static string JoinText(this System.Collections.IEnumerable ienum, string joinChar, bool bSkipEmpty = false) {
StringBuilder sb = new StringBuilder();
if (bSkipEmpty) {
foreach (var item in ienum) {
if (item == null || item == DBNull.Value || "".Equals(item)) continue;
sb.Append(item.ToString());
sb.Append(joinChar);
}
} else {
foreach (var item in ienum) {
if (item != null) sb.Append(item.ToString());
sb.Append(joinChar);
}
}
if (sb.Length > 0) sb.Remove(sb.Length - joinChar.Length, joinChar.Length);
return sb.ToString();
}
/// <summary>
/// 枚举器以分隔符连接
/// </summary>
/// <param name="ienum">枚举器</param>
/// <param name="joinChar">分隔符</param>
/// <param name="format">格式化</param>
/// <param name="bSkipEmpty">是否跳过枚举中空的项目</param>
/// <returns>合并后的字符串</returns>
public static string JoinText(this System.Collections.IEnumerable ienum, string joinChar, string format, bool bSkipEmpty = false) {
StringBuilder sb = new StringBuilder();
if (bSkipEmpty) {
foreach (var item in ienum) {
if (item == null || item == DBNull.Value || "".Equals(item)) continue;
sb.Append(format.ToString(item));
sb.Append(joinChar);
}
} else {
foreach (var item in ienum) {
if (item != null) sb.Append(format.ToString(item));
sb.Append(joinChar);
}
}
if (sb.Length > 0) sb.Remove(sb.Length - joinChar.Length, joinChar.Length);
return sb.ToString();
}
#endregion
}
}


使用VS2010, Framework 3.5或者4.0

在使用的类前面using sys;就可以使用JoinText方法了

list.JoinText(",", "'{0}'");
北京的雾霾天 2011-03-11
  • 打赏
  • 举报
回复
还真没有用过string.join方法,看了下,也就是一个循环。和js的一样效果:

public static string Join(string separator, params object[] values)
{
if (values == null)
{
throw new ArgumentNullException("values");
}
if ((values.Length == 0) || (values[0] == null))
{
return Empty;
}
if (separator == null)
{
separator = Empty;
}
StringBuilder builder = new StringBuilder();
string str = values[0].ToString();
if (str != null)
{
builder.Append(str);
}
for (int i = 1; i < values.Length; i++)
{
builder.Append(separator);
if (values[i] != null)
{
str = values[i].ToString();
if (str != null)
{
builder.Append(str);
}
}
}
return builder.ToString();
}

shui0rong 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 claymore1114 的回复:]
js中的Array join是 拆分数组,如: Array.join(','); //用逗号 链接数组元素。
C#中 有 string.Join(",",list.ToArray());
[/Quote] 嗯 搞定 谢谢结贴给分 呵呵
旅行者I号 2011-03-11
  • 打赏
  • 举报
回复
string[] words = new string[]{"i","love","weiwei"};

string reversed = words.Aggregate((pre, next) =>pre + " " + next);
shui0rong 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hbxtlhx 的回复:]
AddRange或InsertRange可以把一个数组或集合或另一个list整个加入到List中。
[/Quote]

我说的不是这个需求, 我想要list里面的每个元素用特定的字符串连接起来返回一个这个连接的字符串
北京的雾霾天 2011-03-11
  • 打赏
  • 举报
回复
晕死。。。

错了。js里的join方法在.net里好像只能是循环每一个元素来生成一个字符串了。
claymore1114 2011-03-11
  • 打赏
  • 举报
回复
js中的Array join是 拆分数组,如: Array.join(','); //用逗号 链接数组元素。
C#中 有 string.Join(",",list.ToArray());
北京的雾霾天 2011-03-11
  • 打赏
  • 举报
回复
AddRange或InsertRange可以把一个数组或集合或另一个list整个加入到List中。
北京的雾霾天 2011-03-11
  • 打赏
  • 举报
回复
AddRange就可以了

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧