我的arraylist对象包含3个值。
ArrayList arr=new ArrayList()
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
我有要求将值与, saparator
分开所以,我用谷歌搜索并获得了解决方案
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")));
这就是您需要的:
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));
我使用此扩展方法(通常使用通用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();
}