是否有相当于Java的扫描仪级单(.NET)
-
18-09-2019 - |
题
在Java中有一个名为扫描仪很好的类用于读取特定格式的数据结构,如整数字符串和溪流,花车,......是否有任何单相当于?在.NET中有一个二进制阅读器,但它读取数据的二进制文件。我想要的一类,通过从一个字符串解析它读出的数据。
编辑:在当前答案反应,我知道大多数的数据类型的具有解析方法中,但问题是这些,它们不读串依次。在Java中你只需初始化对象,并通过激活方法,则顺序地读出的数据类型。
解决方案
好吧,既然你正在阅读的测试用例文件,我会假设你知道数据的到来的确切格式,它需要如何进行解析。综观文档中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
可能是最好的选择。
其他提示
最基本的数据类型将有一个.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);