1

Javaには、特定の形式の文字列とストリームを整数、浮動小数点数などのデータ構造に読み取るための Scanner と呼ばれる優れたクラスがあります... Monoに同等のものはありますか? .Net にはバイナリ リーダーがありますが、データをバイナリとして読み取ります。文字列からデータを解析して読み取るクラスが必要です。

編集:現在の回答に対する反応、ほとんどのデータ型に解析メソッドがあることは知っていますが、これらの問題は、文字列を順番に読み取らないことです。Java では、オブジェクトを初期化するだけで、メソッドをアクティブにすることで、データ型を順次読み取ります。

4

3 に答える 3

2

テストケース用にファイルを読み込んでいるので、入ってくるデータの正確な形式とその解析方法を知っていると仮定します。ドキュメントでJavaのParserクラスを見ると、非常に複雑に見えたり、便利なクラスよりもはるかに多く見えたりします。スペース上のストリーム文字列をトークン化し、トークンを取得して解析するための関数を提供しているように見えます。そして私が知る限り、.Netには同等のクラスがありません。したがって、再利用したい場合は、自分で作成する必要があります。

ただし、必要な基本的なアルゴリズムは、ファイルの内容を読み取り、トークンを分割して、それらを解析することです。ファイルのサイズが適切な場合File.ReadAllLines()は、ファイルの内容を1行ずつ.に読み込むを使用できますString[]。または、StreamReaderクラスを使用して、そのを使用して一度に1行ずつ読み取ることができますReadLine()。次に、それらを1行に並べたら、それらをString'sSplit()でトークン化し、解析します。

ファイル内の値をどのように使用する必要があるかが正確にわからない場合、非常に基本的なパターンは次のようになります。

// 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-08T17:21:32.510 に答える
1

ほとんどの基本的なデータ型には、それを行う.Parseand.TryParse()メソッドがあります。

たとえば、Int32.TryParseメソッドです。

于 2009-12-08T13:42:08.407 に答える
1

.NET では、型の多くに、String パラメーターを受け取る静的メソッド.Parse()とメソッドがあります。.TryParse()

次のようなことができます:

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

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

int valueAsInt = Int32.TryParse(value);
于 2009-12-08T13:42:56.423 に答える