在Java中,有一个名为Scanner的很好的类,用于将特定格式的字符串和流读取到整数、浮点数等数据结构中。Mono中有没有类似的东西?在.Net中有一个二进制读取器,但它将数据作为二进制文件读取。我想要一个通过从字符串中解析数据来读取数据的类。
编辑:对当前答案的反应,我知道大多数数据类型都有一个解析方法,但问题是,它们不会按顺序读取字符串。在Java中,您只需初始化对象,然后通过激活方法,就可以按顺序读取数据类型。
发布于 2009-12-09 01:21:33
既然您正在读取测试用例的文件,那么我将假设您知道传入数据的确切格式以及如何解析它。在文档中查看Java的Parser类确实会让它看起来非常复杂,或者远远不止是一个方便的类。它似乎只是对空格上的流字符串进行标记,并提供获取标记和解析标记的函数。据我所知,.Net没有类似的类。因此,如果您想要一个可重用的,那么您需要自己编写一个。
但是,您需要的基本算法是读取文件内容、拆分标记并解析它们。如果您的文件大小合理,您可以使用File.ReadAllLines(),它将文件的内容逐行读取到String[]中。或者,您可以使用StreamReader类通过其ReadLine()一次读取一行。然后,一旦将它们放在一行中,就可以使用String的Split()对它们进行标记,然后对它们进行解析。
不确切地知道如何使用文件中的值,一个非常基本的模式可能是:
// 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可能是最好的选择。
发布于 2009-12-08 21:42:08
大多数基本数据类型都有.Parse和.TryParse()方法,它们将为您完成这项工作。
例如Int32.TryParse方法。
发布于 2009-12-08 21:42:56
在.NET中,许多类型都有接受字符串参数的静态.Parse()和.TryParse()方法。
你可以这样做:
Stream s = new Stream();
// Wire up the stream.
StreamReader reader = new StreamReader(s);
String value = reader.ReadToEnd();
int valueAsInt = Int32.TryParse(value);https://stackoverflow.com/questions/1867029
复制相似问题