4

文字列にバックスラッシュ"\"があるのに、IndexOfが失敗するのはなぜですか?

string tmpString = "acg2xs5d.dui";

string tmpString2 = @"c:\acg2xs5d.dui"; 

MessageBox.Show(tmpString.IndexOf(@tmpString2).ToString());


これは-1を返します。何があっても。

tmpString2を"acg2xs5d.dui"に変更し、 "c:\"を削除すると、期待どおりに0が返されます。

「\」が原因で「-1」という誤った結果が表示されているようです。

これはなぜですか、またこれを回避/トラップするにはどうすればよいですか?

4

2 に答える 2

16

あなたはただ使う必要があります tmpString2.IndexOf(@tmpString)

それ以外の tmpString.IndexOf(@tmpString2)

順序を除いてすべてが正しいです。文字列の前に「@」を使用しているため、「\」はエスケープ文字ではありません。

于 2012-08-03T03:34:09.170 に答える
-2

検索する前に、文字列にもう1つスラッシュを含めます。以下のコードを使用してください。

string tmpString = "acg2xs5d.dui"; 
string tmpString2 = "c:\\acg2xs5d.dui";
int a = tmpString2.IndexOf(tmpString); //returns 3
于 2012-08-03T03:31:43.567 に答える