【问题标题】:FileHelpers reading string array from object arrayFileHelpers 从对象数组中读取字符串数组
【发布时间】:2014-05-16 17:16:45
【问题描述】:

我遇到的问题是尝试从 FileHelpers 类生成的对象数组中读取字符串数组。

这是我的文件助手类代码:

[DelimitedRecord(",")]
public class test
{
    [FieldDelimiter(":")]
    public string header;

    public string[] phStrArray;
}

然后我尝试从对象中获取字段

string line="pie,cherry,berry:,cake,carrot,vanilla";
FileHelperEngine engine= new FileHelperEngine(className);
var test =engine.ReadString(line);
Object myObject = test[0];
FieldInfo[] fields = className.GetFields();
var objTempValue = fields[1].GetValue(myObject);
tempValue += Convert.ToString(objTempValue);

这对于常规字符串变量非常有用,但是当涉及到字符串数组时,它只会返回“System.String[]”。总的来说,我只是不确定如何将该字符串数组读入字符串或使其成为我可以实际从中获取数据的实际字符串数组。我有一种感觉,我在考虑如何从中获取数据。

提前感谢您的帮助。

编辑:原谅我,我应该写得更清楚一点(这就是我使用 var 得到的)。问题是变量 objTempValue 变成了 Object{string[]} 的类型。所以这就像对象持有一个字符串数组,似乎没有办法得到它。这就是我需要转换为字符串或从中获取数据的变量。

更新:另一种方法是将其转换为这样的字符串数组。

string[] arr = ((IEnumerable<object>)objTempValue).Cast<object>()
                                                  .Select(x => x.ToString())
                                                  .ToArray();

我不完全确定哪个选项更好,但这个和答案似乎都很好用。

【问题讨论】:

  • 将数组转换为字符串非常简单:String.Join("", myArray); 其中"" 是分隔符。

标签: c# arrays string object filehelpers


【解决方案1】:

您可以使用String.Join 将字符串数组转换为单个字符串:

string line = String.Join(",", phStrArray);

第一个参数是你要使用的分隔符。


注意:反向操作会是:

string[] arr =  line.Split(',');

编辑:如果您的变量静态类型为object,那么您必须将其转换为它的运行时类型:

object objTempValue =  new string[] { "pie", "cherry", "berry" };
string line = String.Join(",", (string[])objTempValue);
// line ==> "pie,cherry,berry"

在 C# 中,您可以通过将类型放在术语前的括号中来转换为另一种类型:

object obj = 5; // System.Int32
int i = (int)obj;

当然,类型必须与存储在变量中的实际值兼容。在值类型的情况下,将其分配给object 变量涉及装箱,而回滚涉及拆箱。见Boxing and Unboxing (C# Programming Guide)和Casting and Type Conversions (C# Programming Guide)

【讨论】:

  • 对不起,我应该更好地解释一下自己(在我的帖子中添加了解释)。问题不是一个普通的字符串数组,而是一个类型为 Object{string[]} 的变量。
  • 啊,太简单了,谢谢。我还找到了另一种方法,但你的方法要容易得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多