2011-02-23 70 views
0

从只包含整数值的文本文件读取数据时,是否有避免转换为非字符串类型的方法(例如,'0000')?
(真实的例子:基因组DNA序列,每个序列的DNA标记物是数字序列)c#:从文件中加载输入的数据而不铸造

编辑: 样本数据:581684531650000651651561156843000021484865321200001987984948978465156115684300002148486532120000198798400009489786515611568430000214848653212000019879849480006516515611684531650000651651561156843000021等...

除非我使用二进制写入器和读取的字节,而不是文本(因为这是如何写数据),
我认为这是一个时髦的想法,所以“否”将是直接的答案。
只是为了在这里得到一个明确的确认,只是为了确定。

我欢迎任何中间解决方案来高效地编写/读取这类数据,而无需编写自定义阅读器GUI,以便在我的应用程序之外以可理解的方式(在某些通用阅读器/浏览器中)显示它。

+2

你的问题很不清楚。 – SLaks 2011-02-23 16:15:03

+0

好的,我怎样才能让它更清晰?如果我还有其他类似的反馈,我会删除它... – 2011-02-23 16:16:02

+0

添加一条,两条,三条您想要阅读的示例行 – rene 2011-02-23 16:17:18

回答

0

而不是铸造,你真的应该使用.TryParse(...)方法试图读取的类型。这是一个更安全的解决方案。

并回答你的问题,其他的则使用二进制文件,也没有(据我所知)的方式来做到这一点没有铸件(或使用的TryParse方法)

+0

感谢大家。所有的答案都收敛了。必须选择一个(这看起来非常合成) – 2011-02-23 16:30:35

0

控制所有读取过程的唯一方法是读取字节。否则你读字符串。

编辑:我没有谈论通过XML自动序列化,因为你给的文件格式的细节。

1

简短的答案是否定的,因为文本文件是一串字符。

长的答案是有点儿是的;如果将数据放入XML等格式,则反序列化器可以基于模式将数据隐式转换回正确的类型(无需手动执行)。

0

如果数据是文本和你需要以整数形式访问它,则需要进行转换。唯一的问题是哪些代码进行了转换。

根据文件格式,您可以查找已经处理它们的类或库。否则,请妥善组织好代码,以免过度关注转换。

一些选项:

// Could throw exceptions 
var x = Convert.ToInt32(text); 
var x = Int32.Parse(text); 

// Won't throw an exception, just check the results 
int x = 0; 
if (Int32.TryParse(text, out x)) { ... }