本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

String.IndexOf 方法 (String, Int32, Int32, StringComparison)

 

報告目前 String 物件中指定之字串第一次出現時的所在索引 (以零為起始)。 參數會指定目前字串中的開始搜尋位置、目前字串中要搜尋的字元數目,以及要用於指定字串的搜尋類型。

命名空間:   System
組件:  mscorlib (於 mscorlib.dll)

public int IndexOf(
	string value,
	int startIndex,
	int count,
	StringComparison comparisonType
)

參數

value
Type: System.String

要搜尋的字串。

startIndex
Type: System.Int32

搜尋開始位置。

count
Type: System.Int32

要檢視的字元位置數目。

comparisonType
Type: System.StringComparison

其中一個列舉值,指定搜尋規則。

傳回值

Type: System.Int32

如果找到該字串,則為從目前執行個體起始處之 value 參數的以零為起始索引位置;如果找不到,則為 -1。 如果 valueEmpty,則傳回值是 startIndex

Exception Condition
ArgumentNullException

valuenull

ArgumentOutOfRangeException

countstartIndex 為負。

-或-

startIndex 大於這個執行個體的長度。

-或-

count 大於這個字串減 startIndex 的長度。

ArgumentException

comparisonType 不是有效的 System.StringComparison 值。

索引編號從 0 (零) 開始。 startIndex 參數的範圍可以從 0 到字串執行個體的長度。

搜尋開始於startIndex,並且會繼續startIndex+ count -1。 在字元startIndex+count未包含在搜尋中。

comparisonType參數會指定要搜尋value參數使用目前或而異的文化特性、 使用區分大小寫或不區分大小寫的搜尋,以及使用文字或序數比較規則。

呼叫端注意事項︰

字元集包含可忽略的字元,這些字元在執行語言或區分文化特性的比較時不列入考慮。 執行區分文化特性的搜尋 (也就是說,如果 comparisonType 不是 StringComparison.OrdinalStringComparison.OrdinalIgnoreCase) 時,如果 value 包含可忽略的字元,則結果等於在已移除該字元的情況下搜尋。 如果value只包含一個或多個可忽略的字元,IndexOf(String, Int32, Int32, StringComparison)方法一律會傳回startIndex,即開始搜尋的字元位置。

在下列範例中,IndexOf(String, Int32, Int32, StringComparison)方法用來尋找選擇性連字號 (U + 00AD) 後面接著"m"中的第三個透過兩個字串中的第六個字元位置開始的位置。 只有其中一個字串包含必要的子字串。 如果執行範例.NET Framework 4或更新版本中,在這兩種情況下,因為選擇性連字號是可忽略的字元,方法會傳回"m"在字串中的索引時,它會執行區分文化特性的比較。 當它執行序數比較時,不過,它會尋找子字串只能在第一個字串中。 請注意,就第一個字串,其中包含選擇性連字號後面接著"m",此方法無法傳回選擇性連字號的索引執行區分文化特性的比較時,而是傳回"m"的索引。 只有在執行序數比較時,方法才會傳回第一個字串中選擇性連字號的索引。

using System;

public class Example
{
   public static void Main()
   {
      string searchString = "\u00ADm";
      string s1 = "ani\u00ADmal" ;
      string s2 = "animal";

      Console.WriteLine(s1.IndexOf(searchString, 2, 4, StringComparison.CurrentCulture));
      Console.WriteLine(s1.IndexOf(searchString, 2, 4, StringComparison.Ordinal));
      Console.WriteLine(s2.IndexOf(searchString, 2, 4, StringComparison.CurrentCulture));
      Console.WriteLine(s2.IndexOf(searchString, 2, 4, StringComparison.Ordinal));
   }
}
// The example displays the following output:
//       4
//       3
//       3
//       -1

下列 exampledemonstrates 三個多載的IndexOf尋找另一個使用的不同值的字串內的字串的第一個出現位置的方法StringComparison列舉型別。

// This code example demonstrates the 
// System.String.IndexOf(String, ..., StringComparison) methods.

using System;
using System.Threading;
using System.Globalization;

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the first 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 StringComparison. Specify the start 
// index and count. 

    Console.WriteLine("Part 1: Start index and count are specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(CapitalAWithRing, 0, cat.Length, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparison. Specify the 
// start index. 
    Console.WriteLine("\nPart 2: Start index is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(CapitalAWithRing, 0, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparison. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(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 first 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

*/

通用 Windows 平台
自 8 起供應
.NET Framework
自 2.0 起供應
可攜式類別庫
提供支援︰ 可攜式 .NET 平台
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應
Windows Phone
自 8.1 起供應
回到頁首
顯示: