0

私はこのコードと混同しています。

string str = sample.indexof("a",0);

動作しています。しかし、以下は機能していません。

string str = sample.indexof("\",0);
4

2 に答える 2

7

C# の文字列リテラルと文字リテラルのバックスラッシュをエスケープするか、逐語的な文字列リテラルを使用する必要があります。これらのいずれかが機能します。

int index = sample.IndexOf("\\", 0);
int index = sample.IndexOf(@"\", 0);
int index = sample.IndexOf('\\', 0);

または、とにかく最初から見ている場合は、初期インデックスを指定せずに:

int index = sample.IndexOf("\\");
int index = sample.IndexOf(@"\");
int index = sample.IndexOf('\\');

個人的には、単一の文字のみを探している場合は、これらの最後のものを使用します。実際には正確に 1 つの文字であることは明らかです。(これもわずかに効率的かもしれませんが、明快さがより重要です。)

(C# では大文字と小文字が区別されることに注意してください。それは ではIndexOfなくです。また、 ではなくindexofを返すことに注意してください。サンプル コードを正確にすることができれば役立ちます...)intstring

于 2012-04-21T11:58:49.467 に答える
1

\ はエスケープ シーケンス char であるため、以下のオプションのいずれかを試すことができます。

int i = sample.indexof("\\",0)

また

int i = sample.IndexOf(@"\", 0);
于 2012-04-21T11:58:37.597 に答える