首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java语言中是否有一个与Scanner类等效的单声道(.Net)

在Java语言中是否有一个与Scanner类等效的单声道(.Net)
EN

Stack Overflow用户
提问于 2009-12-08 21:38:39
回答 3查看 603关注 0票数 1

在Java中,有一个名为Scanner的很好的类,用于将特定格式的字符串和流读取到整数、浮点数等数据结构中。Mono中有没有类似的东西?在.Net中有一个二进制读取器,但它将数据作为二进制文件读取。我想要一个通过从字符串中解析数据来读取数据的类。

编辑:对当前答案的反应,我知道大多数数据类型都有一个解析方法,但问题是,它们不会按顺序读取字符串。在Java中,您只需初始化对象,然后通过激活方法,就可以按顺序读取数据类型。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-09 01:21:33

既然您正在读取测试用例的文件,那么我将假设您知道传入数据的确切格式以及如何解析它。在文档中查看Java的Parser类确实会让它看起来非常复杂,或者远远不止是一个方便的类。它似乎只是对空格上的流字符串进行标记,并提供获取标记和解析标记的函数。据我所知,.Net没有类似的类。因此,如果您想要一个可重用的,那么您需要自己编写一个。

但是,您需要的基本算法是读取文件内容、拆分标记并解析它们。如果您的文件大小合理,您可以使用File.ReadAllLines(),它将文件的内容逐行读取到String[]中。或者,您可以使用StreamReader类通过其ReadLine()一次读取一行。然后,一旦将它们放在一行中,就可以使用StringSplit()对它们进行标记,然后对它们进行解析。

不确切地知道如何使用文件中的值,一个非常基本的模式可能是:

代码语言:javascript
复制
// 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可能是最好的选择。

票数 2
EN

Stack Overflow用户

发布于 2009-12-08 21:42:08

大多数基本数据类型都有.Parse.TryParse()方法,它们将为您完成这项工作。

例如Int32.TryParse方法。

票数 1
EN

Stack Overflow用户

发布于 2009-12-08 21:42:56

在.NET中,许多类型都有接受字符串参数的静态.Parse().TryParse()方法。

你可以这样做:

代码语言:javascript
复制
Stream s = new Stream();
// Wire up the stream.

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

int valueAsInt = Int32.TryParse(value);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1867029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档