エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

String.IndexOf メソッド (String, Int32, Int32, StringComparison)

指定した文字列が現在の String オブジェクト内で最初に見つかった位置の 0 から始まるインデックスをレポートします。 パラメーターは、現在の文字列での検索位置、現在の文字列で検索する文字の数、および指定した文字列に使用する検索の種類を指定します。

名前空間:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

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

パラメーター

value
型 : System.String
シークする文字列。
startIndex
型 : System.Int32
検索が開始される位置。
count
型 : System.Int32
検査する文字位置の数。
comparisonType
型 : System.StringComparison
検索の規則を指定する列挙値の 1 つ。

戻り値

型 : System.Int32
その文字列が見つかった場合は、value パラメーターの 0 から始まるインデックスでの位置。見つからなかった場合は -1。 valueEmpty の場合、戻り値は startIndex です。

例外条件
ArgumentNullException

valuenull なので、

ArgumentOutOfRangeException

count または startIndex が負の値です。

または

startIndex がこのインスタンスの長さを超えています。

または

count がこの文字列 startIndex の長さを超えています。

ArgumentException

comparisonType が有効な System.StringComparison 値ではありません。

インデックス番号が 0 から始まります。(ゼロ)。 startIndex パラメーターには、0 から文字列インスタンスの長さまでの範囲の値を指定できます。

startIndex から startIndex + count -1 番目の位置まで検索が実行されました。 startIndex + count の位置に文字は検出されませんでした。

comparisonType パラメーターは、現在のカルチャまたはインバリアント カルチャを使用し、大文字と小文字を区別する検索または区別しない検索を使用し、比較規則に単語または序数を使用して、value パラメーターが検索されるように指定します。

呼び出し時の注意

文字セットには無視できる文字が含まれています。これらの文字は、言語またはカルチャに依存した比較を実行する際には考慮されません。 カルチャに依存する検索の場合 (つまり、comparisonTypeStringComparison.Ordinal または StringComparison.OrdinalIgnoreCase でない場合)、value に無視できる文字が含まれていると、その文字を削除して検索した場合と同じ結果になります。 value が一つ以上の無視できる文字のみで構成されている場合は、検索の開始文字位置である IndexOf(String, Int32, Int32, StringComparison) のメソッドは startIndexを常に返します。

次の例では、開始する「m」の後にソフト ハイフン (U+00AD) の位置を特定するために、2 番目の文字列の 3 番目から 6 番目の文字位置から IndexOf(String, Int32, Int32, StringComparison) のメソッドが使用されます。 文字列の 1 つのみに必要な部分文字列が含まれます。 例に .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


StringComparison 列挙体の異なる値を使用して、ある文字列が別の文字列内で最初に出現する位置を検索する IndexOf メソッドの 3 つのオーバーロードの例を次に示します。


// 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

*/


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

汎用性のあるクラス ライブラリ

サポート対象 : 汎用性のあるクラス ライブラリ

Windows ストア アプリ用 .NET

サポート対象 : Windows 8

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft