我的ArrayList对象包含3个值。
ArrayList arr=new ArrayList()
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
我已经要求使用,分隔符
分隔值所以,我用谷歌搜索并得到了解决方案
string afterjoined=string.Join(",", (string[])arr.ToArray(Type.GetType("System.String")));
以上代码将以
的形式返回ABC,DEF,GHI
但是上面的代码不允许任何字符串与它连接。
我想要一个特殊字符串,需要与最终的分隔值连接,如下所示,
MYabc,MYdef,Myghi
这是我尝试使用现有代码(不起作用)
string afterjoined=string.Join(",", "MYabc"+(string[])arr.ToArray(Type.GetType("System.String")));
答案 0 :(得分:5)
这就是你需要的:
string.Join(",",
arr.Cast<string>() // use cast here instead of the casting to reduce the number of ()s
.Select(x => "MY" + x))
Select
调用通过执行指定的转换来转换列表中的每个字符串。在这种情况下,它是"MY" + x
,因此它会在MY
前加上数组中的每个元素。
为什么使用ArrayLists?它们不是类型安全的。您应该使用List<T>
代替。代码将变得更加清洁:
List<string> arr=new List<string>();
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
string joined = string.Join(",", arr.Select(x => "MY" + x));
答案 1 :(得分:1)
如果我需要该功能,我会使用此扩展方法(通常使用通用IEnumerable
,已针对ArrayList
进行修改):
public static string MergeWithPrefix(this ArrayList list, string prefix, string separator = ";")
{
var sb = new StringBuilder(list.Count * 16);
foreach (var item in list)
sb.Append(prefix).Append(item).Append(separator);
sb.Remove(sb.Length - separator.Length, separator.Length);
return sb.ToString();
}