我有以下代码:
string s = "Hello, World!";
Console.WriteLine(s.LastIndexOf("World"));//7
Console.WriteLine(s.LastIndexOf("World", 7));//-1
为什么第二次调用 LastIndexOf 的结果是 -1 而不是 7?
我有以下代码:
string s = "Hello, World!";
Console.WriteLine(s.LastIndexOf("World"));//7
Console.WriteLine(s.LastIndexOf("World", 7));//-1
为什么第二次调用 LastIndexOf 的结果是 -1 而不是 7?
来自MSDN:
搜索从该实例的 startIndex 字符位置开始,然后朝开头向后进行,直到找到值或检查了第一个字符位置。例如,如果 startIndex 为 Length - 1,则该方法搜索从字符串中的最后一个字符到开头的每个字符。
由于搜索是向后进行的,因此没有包含World
7 之前的索引。
如果您查看LastIndexOf Method (Char, Int32) 的文档:
如果找到该字符,则返回 value 的从零开始的索引位置,如果未找到或当前实例等于 String.Empty,则返回 -1。
由于 7 似乎是最后一个索引,因此该位置之后的内容为空,因此返回值为-1
搜索从指定的字符位置开始,并按照 doc 所说的那样向字符串的开头向后进行。
在您的情况下,在 0 - 7 "Hello, W" 范围内没有出现单词 "World"