将整个对象数组转换为字符串

时间:2010-08-03 08:10:53

标签: c# string .net-3.5 object casting

我有一个object类型的数组,它们是字符串。我想将它们转换为字符串。这样做最快的方法是什么?

例如:我有这个object[]并希望将其转换为string[]

更新:我认为问题是object[]上的一些对象实际上是其他对象,如整数。我需要先将它们转换为字符串。请将其包含在您的解决方案中。感谢。

9 个答案:

答案 0 :(得分:15)

object[] data = new object[] { "hello", "world", "!" };

string[] stringData = data.Cast<string>().ToArray();

如果您的对象数组包含混合元素,则可以使用ConvertAll的{​​{1}}方法:

Array

答案 1 :(得分:13)

string[] output = Array.ConvertAll(objects, item => item.ToString());

答案 2 :(得分:12)

可能不是最有效的方法......当对象不一定是字符串时,它具有工作的好处。

string[] output = (from o in objectArray
                   select o.ToString()).ToArray()

答案 3 :(得分:3)

string[] myStringArray = myObjectArray.Cast<string>().ToArray();

或者如果您使用var关键字:

var myStringArray = myObjectArray.Cast<string>();

如果您的任何字符串为空,则使用Cast不会抛出异常。

答案 4 :(得分:1)

 object[] objects;
 ..
 string[] result = Array.ConvertAll(objects, 
        new Converter<object, string>(Obj2string));
 public static string Obj2string(object obj)
 {
    return obj.ToString();
 }

答案 5 :(得分:0)

string[] str = new string[myObjects.Length];
for (int i = 0; i < myObjects.Length; ++i)
    str[i] = myObjects[i].ToString();

OR:

List<string> lst = new List<string>();
foreach (object o in myObjects)
    list.Add(o.ToString());
return list.ToArray();

答案 6 :(得分:0)

object[] data = new object[] { "hello", "world", 1, 2 };

string[] strings = data.Select(o => o == null ? null : o.ToString()).ToArray();

疯狂的问题更新......

答案 7 :(得分:0)

如果数组中的某些对象是整数,则不能使用Enumerable.Cast,执行此操作时会抛出InvalidCastException:

var list = new object[] { "1", 1 };

list.Cast<string>();

相反,尝试cristobalito的答案,或lambda语法等效:

list.Select(o => o.ToString()).ToArray();

答案 8 :(得分:0)

因为所有对象都已经是字符串,所以硬拼接工作。更安全的方法可能是使用以下内容:

  private static void Conversions()
  {
     var strings = Convert(new object[] {"a", "b"});
     var strings2 = Convert(new object[] {});
  }

  private static string[] Convert(IEnumerable<object> objects)
  {
     return objects as string[] ?? new string[] {};
  }

此实现始终返回一个字符串数组,可能为空。客户端代码可以基于该假设来实现,并且您可以避免必须检查null的返回值。

相关问题