System.String.LastIndexOf 方法 (String, Int32, StringComparison)
方法描述
报告指定字符串在当前 String 对象中最后一个匹配项的索引。 参数指定当前字符串中的起始搜索位置,以及要用于指定字符串的搜索类型。
语法定义(C# System.String.LastIndexOf 方法 (String, Int32, StringComparison) 的用法)
public int LastIndexOf( string value, int startIndex, StringComparison comparisonType )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
value | System-String | 要搜寻的字符串。 |
startIndex | System-Int32 | 搜索起始位置。 |
comparisonType | System-StringComparison | 指定搜索规则的枚举值之一。 |
返回值 | System.Int32 | 如果找到该字符串,则为 value 参数的索引位置;如果未找到,则为 -1。或者如果当前实例等于 String.Empty 则也为 -1。 如果 value 为 String.Empty,则为 startIndex 和此实例中的最后一个位置中的较小者。 |
提示和注释
索引编号从零开始。 也就是说,字符串中第一个字符的位置为索引 0,而最后一个字符的位置为 Length - 1。
搜索从 startIndex 字符位置开始,沿反向进行,直至找到 value 或检查完第一个字符位置为止。 例如,如果 startIndex 为 Length - 1,则该方法将搜索从字符串中最后一个字符到开头的所有字符。
comparisonType 参数指定使用当前区域性还是固定区域性、使用区分大小写的搜索还是不区分大小写的搜索、以及使用字比较规则还是序号比较规则来搜索 value 参数。
System.String.LastIndexOf 方法 (String, Int32, StringComparison)例子
下面的示例演示 LastIndexOf 方法的三个重载,该方法使用 StringComparison 枚举的不同值在另一个字符串内查找某个字符串的最后一个匹配项。
// This code example demonstrates the // System.String.LastIndexOf(String, ..., StringComparison) methods. using System; using System.Threading; using System.Globalization; class Sample { public static void Main() { string intro = "Find the last occurrence of a character using different " + "values of StringComparison."; string resultFmt = "Comparison: {0,-28} Location: {1,3}"; // Define a string to search for. // U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE string CapitalAWithRing = "\u00c5"; // Define a string to search. // The result of combining the characters LATIN SMALL LETTER A and COMBINING // RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character // LATIN SMALL LETTER A WITH RING ABOVE (U+00e5). string cat = "A Cheshire c" + "\u0061\u030a" + "t"; int loc = 0; StringComparison[] scValues = { StringComparison.CurrentCulture, StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCulture, StringComparison.InvariantCultureIgnoreCase, StringComparison.Ordinal, StringComparison.OrdinalIgnoreCase }; // Clear the screen and display an introduction. Console.Clear(); Console.WriteLine(intro); // Display the current culture because culture affects the result. For example, // try this code example with the "sv-SE" (Swedish-Sweden) culture. Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Console.WriteLine("The current culture is \"{0}\" - {1}.", Thread.CurrentThread.CurrentCulture.Name, Thread.CurrentThread.CurrentCulture.DisplayName); // Display the string to search for and the string to search. Console.WriteLine("Search for the string \"{0}\" in the string \"{1}\"", CapitalAWithRing, cat); Console.WriteLine(); // Note that in each of the following searches, we look for // LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains // LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates // the string was not found. // Search using different values of StringComparsion. Specify the start // index and count. Console.WriteLine("Part 1: Start index and count are specified."); foreach (StringComparison sc in scValues) { loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, cat.Length, sc); Console.WriteLine(resultFmt, sc, loc); } // Search using different values of StringComparsion. Specify the // start index. Console.WriteLine("\nPart 2: Start index is specified."); foreach (StringComparison sc in scValues) { loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, sc); Console.WriteLine(resultFmt, sc, loc); } // Search using different values of StringComparsion. Console.WriteLine("\nPart 3: Neither start index nor count is specified."); foreach (StringComparison sc in scValues) { loc = cat.LastIndexOf(CapitalAWithRing, sc); Console.WriteLine(resultFmt, sc, loc); } } } /* Note: This code example was executed on a console whose user interface culture is "en-US" (English-United States). This code example produces the following results: Find the last occurrence of a character using different values of StringComparison. The current culture is "en-US" - English (United States). Search for the string "Å" in the string "A Cheshire ca°t" Part 1: Start index and count are specified. Comparison: CurrentCulture Location: -1 Comparison: CurrentCultureIgnoreCase Location: 12 Comparison: InvariantCulture Location: -1 Comparison: InvariantCultureIgnoreCase Location: 12 Comparison: Ordinal Location: -1 Comparison: OrdinalIgnoreCase Location: -1 Part 2: Start index is specified. Comparison: CurrentCulture Location: -1 Comparison: CurrentCultureIgnoreCase Location: 12 Comparison: InvariantCulture Location: -1 Comparison: InvariantCultureIgnoreCase Location: 12 Comparison: Ordinal Location: -1 Comparison: OrdinalIgnoreCase Location: -1 Part 3: Neither start index nor count is specified. Comparison: CurrentCulture Location: -1 Comparison: CurrentCultureIgnoreCase Location: 12 Comparison: InvariantCulture Location: -1 Comparison: InvariantCultureIgnoreCase Location: 12 Comparison: Ordinal Location: -1 Comparison: OrdinalIgnoreCase Location: -1 */
异常
异常 | 异常描述 |
---|---|
ArgumentNullException | value 为 null。 |
ArgumentOutOfRangeException |
|
ArgumentException | comparisonType 不是有效的 System.StringComparison 值。 |
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。