在Java中有一个名为扫描仪很好的类用于读取特定格式的数据结构,如整数字符串和溪流,花车,......是否有任何单相当于?在.NET中有一个二进制阅读器,但它读取数据的二进制文件。我想要的一类,通过从一个字符串解析它读出的数据。

编辑:在当前答案反应,我知道大多数的数据类型的具有解析方法中,但问题是这些,它们不读串依次。在Java中你只需初始化对象,并通过激活方法,则顺序地读出的数据类型。

有帮助吗?

解决方案

好吧,既然你正在阅读的测试用例文件,我会假设你知道数据的到来的确切格式,它需要如何进行解析。综观文档中Java的Parser类并使它看起来很复杂或大于一个方便的类等等。这似乎只是标记化的空间上的流串并采取令牌并分析它提供的功能。而据我所知,.NET不具有等价类。所以,如果你想要一个重复使用,那么你就需要自己写一个。

但你需要的基本算法是读取文件内容,拆分令牌,并解析他们。如果你的文件是合理的大小,你可以使用File.ReadAllLines()读取文件中的行由行的内容插入到String[]。或者你可以使用一个StreamReader类使用其ReadLine()阅读在时间线中的一条。然后,一旦你在一条线上有他们,你将与StringSplit()记号化它们,然后分析它们。

不知道究竟如何需要在文件中使用的值,一个很基本的模式可以是:

// Read in the whole file
String[] strLines = File.ReadAllLines(strFilePath);

// Loop through each of the lines to process their contents
foreach (String strLine in strLines) {
    // Tokenize on the spaces
    String[] strTokens = strLine.Split(' ');

    // Parse the values
    int iIntValue = Int.Parse(strTokens[0]);
    double dDoubleValue = Double.Parse(strTokens[1]);

    // Do something with the values
}

创建自己的Parser类将允许你使用他们,你要保持状态,并自动提前令牌。如果你走这条路线,该StreamReader可能是最好的选择。

其他提示

最基本的数据类型将有一个.Parse.TryParse()方法,将做到这一点你。

例如在 Int32.TryParse 方法

在.NET,许多类型的具有静态.Parse().TryParse()方法,需要一个String参数。

您可以这样做:

Stream s = new Stream();
// Wire up the stream.

StreamReader reader = new StreamReader(s);
String value = reader.ReadToEnd();

int valueAsInt = Int32.TryParse(value);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top