1

我有以下代码:

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

为什么第二次调用 LastIndexOf 的结果是 -1 而不是 7?

4

3 回答 3

3

来自MSDN

搜索从该实例的 startIndex 字符位置开始,然后朝开头向后进行,直到找到值或检查了第一个字符位置。例如,如果 startIndex 为 Length - 1,则该方法搜索从字符串中的最后一个字符到开头的每个字符。

由于搜索是向后进行的,因此没有包含World7 之前的索引。

于 2017-04-12T10:23:43.373 回答
0

如果您查看LastIndexOf Method (Char, Int32) 的文档

如果找到该字符,则返回 value 的从零开始的索引位置,如果未找到或当前实例等于 String.Empty,则返回 -1。

由于 7 似乎是最后一个索引,因此该位置之后的内容为空,因此返回值为-1

于 2017-04-12T10:19:42.713 回答
0

搜索从指定的字符位置开始,并按照 doc 所说的那样向字符串的开头向后进行。

在您的情况下,在 0 - 7 "Hello, W" 范围内没有出现单词 "World"

于 2017-04-12T10:26:20.940 回答