最近、すべてのプロジェクトを .NET 3.5 から .NET 4 にアップグレードしましたstring.IndexOf()
。
私のコードは明らかに少し違うことをしていますが、問題を調査する過程でIndexOf()
、文字列自体を呼び出すと、0 ではなく 1 が返されることがわかりました。つまり、次のようになります。
string text = "\xAD\x2D"; // problem happens with "-dely N.China", too;
int index = text.IndexOf(text); // see update note below.
インデックスを 0 ではなく 1 にしてくれました。この問題について注意すべき点がいくつかあります。
問題はこれらのハイフンに関連しているようです (最初の文字は Unicode ソフト ハイフンで、2 番目の文字は通常のハイフンです)。
再確認しましたが、これは .NET 3.5 では発生しませんが、.NET 4 では発生します。
を序数比較を行うように変更する
IndexOf()
と問題が修正されるため、何らかの理由で最初の文字がデフォルトで無視されますIndexOf
。
なぜこれが起こるのか誰か知っていますか?
編集
申し訳ありませんが、元の投稿に少し手を加えて、そこに隠しダッシュを2回入れました。文字列を更新しました。正しいエディターに貼り付ければ、2 ではなく 1 のインデックスが返されます。
アップデート:
元の問題文字列を、実際のすべての文字がはっきりと見える文字列に変更しました (エスケープを使用)。これにより、質問が少し単純化されます。