将自己的字符串与分离的阵列列表进行连接



我的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();
    }

最新更新