2017-04-12 80 views
1

我有以下代碼:爲什麼C#的LastIndexOf以這種方式表現?

string s = "Hello, World!"; 
Console.WriteLine(s.LastIndexOf("World"));//7 
Console.WriteLine(s.LastIndexOf("World", 7));//-1 

爲什麼第二次調用LastIndexOf的結果是-1,而不是7?

+1

第二個電話開始搜索「世界」從7的字符開始。此搜索不返回結果,因此返回-1 – Fabjan

+1

LastIndexOf從0到給定索引的搜索,此處爲7.它不從7搜索到結束。請參閱[文檔](https://msdn.microsoft.com/de-de/library/bc3z4t9d(v = vs.110).aspx)。 – gdir

回答

3

MSDN

搜索在從startIndex字符位置開始這個實例並向後開始,直到找到任何值或檢查了第一個字符位置。例如,如果startIndex是Length - 1,則該方法將從字符串中最後一個字符開始搜索每個字符。

由於搜索向後做,存在包含該搜索在指定的字符位置開始,並如醫生說朝向字符串的開頭向後前進World之前7.

0

如果你看一看的doc of LastIndexOf Method (Char, Int32)

回報,如果該字符被發現,或-1,如果沒有找到,或者如果當前實例等於字符串的值從零開始的索引位置。空。

自7似乎是最後一個索引,什麼是後這個位置是空的,因此返回值是-1

0

沒有索引。

你的情況存在範圍0無字的出現「世界」 - 7「你好,W」

相關問題