1

行ごとに並列に読み取るときに、2つの文字列を比較するための優れた方法を見つけようとしています。equalsメソッドなどを使用せずにこれを実行したい理由は、文字列が完全に同じではないためです。より正確には、例を示します。

String s1 = "aaa\nbbb\nccc\ddd"
String s2 = "aaa\n\rbbb\n\rccc\n\rddd"

uが見ることができるように、行ごとに見ているときに両方の文字列が同じ値を持っていることがわかります(ただし、s2にも\ rが含まれているため、完全に等しくはありません)。これで、removeメソッドを使用してその「\ r」をクリーンアップできることがわかりましたが、文字列が非常に大きくなる可能性があるため、行ごとにループし、文字列が等しくない場合はロジックを壊します。言い換えると、\ rからエントリ文字列をクリーンアップするのではなく、必要な行だけを繰り返すことを好みます。

編集済み:ファイルから読み取っていません。これらはプレーンな文字列です。

何か案は :) ?

4

2 に答える 2

5

文字列が非常に大きくなる可能性があると言ったので、ファイルから読み取っていると思います。BufferedReader を使用してreadLine();メソッドを使用すると、行区切りなしで行ごとに取得されます。これで、使用できますequals()

BufferedReader reader1 = ...; // depends on your source
BufferedReader reader2 = ...; // depends on your source

String line1 = null;
String line2 = null;

while ((line1 = reader1.readLine()) != null && (line2 = reader2.readLine()) != null)
{
     if (line1.equals(line2))
     {

     }
}
于 2012-04-12T09:03:20.597 に答える
2

文字列ごとに 1 つずつ、2 つの BufferedReader オブジェクトを作成し、行ごとに読み取り、行を表す文字列を比較できます。BufferedReader.readLine() メソッドは、行末文字を自動的に削除します (返される文字列には追加されません)。

BufferedReader br1 = new BufferedReader(新しい StringReader(s1)); バッファリングされたリーダーを作成する方法です。

于 2012-04-12T09:07:51.840 に答える