2011-01-25 13 views
1

2つのシリアル化されたオブジェクトを2つのテキストファイルに格納して、両方を読み込んで2つの異なる文字列に格納し、この2つの文字列を比較しようとすると、文字列の末尾に新しい行の違いがあります スペースやキャリッジリターンを無視して両方を比較する方法は2つの文字列を圧縮して比較することができますが、.netライブラリのようなものがありますIcomparer、これが私にとってもうまくいくかどうかは分かりません。 C#の2つの文字列を比較する

は、事前にあなたに感謝 Jpの

+0

どの言語/プラットフォームですか? – Oded

+0

あなたはどの言語を使用していますか?あなたのコードを投稿してください。 –

+0

私はC#言語を使用しています – jprbest

答えて

4

両方の値が文字列として格納されている場合、String.Trim()関数は面倒な空白文字を処理しますが、空白文字を置き換えながら比較します。

 string a = "string comparison\r\n"; 
     string b = "string comparison"; 

     string c = a.Trim(); 
     string d = b.Trim(); 

     if (c == d) 
      Console.WriteLine("strings are equal"); 
     else 
      Console.WriteLine("strings are not equal"); 

     string e = a.Replace("\r\n", ""); 
     string f = b.Replace("\r\n", ""); 

     if (e == f) 
      Console.WriteLine("strings are equal"); 
     else 
      Console.WriteLine("strings are not equal"); 
0

あなたがちょうどそれらの間に改行を表す任意の文字を無視し、行ずつ読んでいる場合。 改行が必要な場合は、検索と置換を使用して同一の文字に変換するだけです。

+0

いいえ、私は行ごとに読んでいません、私は文字列にファイル全体を格納するので、readtoend関数を使用します。ファイルの終わりに唯一の問題があります。何らかの理由で\ r \ nといくつかのファイルが含まれていません。なぜこの比較が失敗するのですか? – jprbest

1

「\ n」と「\ r」の文字を何も置き換えずに比較するのが簡単です。

+0

これは私の計画ですBもしそれに組み込まれていない場合 – jprbest

+0

、私は彼らが置き換えて賭ける。独自のcompareWithIgniore(string charToIgniore)関数をいつでも作成できます。 –

0

空白を排除して比較することができるシンプルな正規表現を使用することができます(またはPhillippeが言ったように)。しかし、私はそのような比較を行う組み込み関数はないと思う。

+0

yehこれは私が気にしていることですが、何か組み込みの関数があるかどうか疑問に思っていました – jprbest

+0

申し訳ありません。私は.NETでこのようなことは見ていません。サードパーティライブラリがあるかもしれません... – gbvb