次の方法で共有


CompareInfo.LastIndexOf メソッド (String, Char, Int32)

指定した文字を検索し、検索対象文字列の先頭から指定したインデックスまでの範囲内で、その文字列が最後に出現する位置の 0 から始まるインデックス番号を返します。

Overloads Public Overridable Function LastIndexOf( _
   ByVal source As String, _   ByVal value As Char, _   ByVal startIndex As Integer _) As Integer
[C#]
public virtual int LastIndexOf(stringsource,charvalue,intstartIndex);
[C++]
public: virtual int LastIndexOf(String* source,__wchar_tvalue,intstartIndex);
[JScript]
public function LastIndexOf(
   source : String,value : Char,startIndex : int) : int;

パラメータ

  • source
    検索対象の文字列。
  • value
    source 内で検索する文字。
  • startIndex
    後方検索の開始位置を示す 0 から始まるインデックス。

戻り値

source の先頭から startIndex までの source の範囲内で、value が見つかった場合は、最後に見つかった位置の 0 から始まるインデックス番号。それ以外の場合は -1。

例外

例外の種類 条件
ArgumentNullException source が null 参照 (Visual Basic では Nothing) です。
ArgumentOutOfRangeException startIndex が source の有効なインデックスの範囲外の値です。

解説

検索範囲の文字列内で、検索は startIndex から開始して逆方向に進み、その文字列の先頭で終了します。

このオーバーロードは、カルチャを考慮した検索を実行します。カルチャによっては、char が合字の 'Æ' (U+00C6) など構成済み文字を表す Unicode 値の場合に、"AE" (U+0041、U+0045) のように正しい順序で出現した構成要素と等価であると見なします。Unicode 値が同じ場合にだけ、ある char と別の char が等価であると見なす番号順 (カルチャを考慮しない) 検索を実行するには、 CompareOptions 値をパラメータとして受け取るオーバーロードのいずれかを使用して、 Ordinal 値を使用します。char を検索する String.LastIndexOf のオーバーロードは、番号順検索を実行します。文字列を検索するオーバーロードは、カルチャを考慮した検索を実行します。

使用例

[Visual Basic, C#, C++] 次に示すのは、文字列の一部分の、最初と最後に出現する文字または部分文字列のインデックスを調べるコード例です。 IndexOfLastIndexOf では、同じ startIndex を使用しても、文字列内の検索対象部分は異なります。

 
Imports System
Imports System.Globalization
Imports Microsoft.VisualBasic

Public Class SamplesCompareInfo

   Public Shared Sub Main()

      ' Creates CompareInfo for the InvariantCulture.
      Dim myComp As CompareInfo = CultureInfo.InvariantCulture.CompareInfo

      ' iS is the starting index of the substring.
      Dim [iS] As Integer = 20
      ' myT1 is the string used for padding.
      Dim myT1 As [String]

      ' Searches for the ligature .
      Dim myStr As [String] = "Is AE or ae the same as  or ?"
      Console.WriteLine()

      myT1 = New [String]("-"c, [iS])
      Console.WriteLine("IndexOf( String, *, {0}, * )", [iS])
      Console.WriteLine("Original      : {0}", myStr)
      Console.WriteLine("No options    : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           AE : ", myComp.IndexOf(myStr, "AE", [iS]), - 1)
      PrintMarker("           ae : ", myComp.IndexOf(myStr, "ae", [iS]), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS]), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS]), - 1)
      Console.WriteLine("Ordinal       : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           AE : ", myComp.IndexOf(myStr, "AE", [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("           ae : ", myComp.IndexOf(myStr, "ae", [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.Ordinal), - 1)
      Console.WriteLine("IgnoreCase    : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           AE : ", myComp.IndexOf(myStr, "AE", [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("           ae : ", myComp.IndexOf(myStr, "ae", [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase), - 1)

      myT1 = New [String]("-"c, myStr.Length - [iS] - 1)
      Console.WriteLine("LastIndexOf( String, *, {0}, * )", [iS])
      Console.WriteLine("Original      : {0}", myStr)
      Console.WriteLine("No options    : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           AE : ", - 1, myComp.LastIndexOf(myStr, "AE", [iS]))
      PrintMarker("           ae : ", - 1, myComp.LastIndexOf(myStr, "ae", [iS]))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS]))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS]))
      Console.WriteLine("Ordinal       : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           AE : ", - 1, myComp.LastIndexOf(myStr, "AE", [iS], CompareOptions.Ordinal))
      PrintMarker("           ae : ", - 1, myComp.LastIndexOf(myStr, "ae", [iS], CompareOptions.Ordinal))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.Ordinal))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.Ordinal))
      Console.WriteLine("IgnoreCase    : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           AE : ", - 1, myComp.LastIndexOf(myStr, "AE", [iS], CompareOptions.IgnoreCase))
      PrintMarker("           ae : ", - 1, myComp.LastIndexOf(myStr, "ae", [iS], CompareOptions.IgnoreCase))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase))

      ' Searches for the combining character sequence Latin capital letter U with diaeresis or Latin small letter u with diaeresis.
      myStr = "Is " & ChrW(&H0055) & ChrW(&H0308) & " or " & ChrW(&H0075) & ChrW(&H0308) & " the same as " & ChrW(&H00DC) & " or " & ChrW(&H00FC) & "?"
      Console.WriteLine()

      myT1 = New [String]("-"c, [iS])
      Console.WriteLine("IndexOf( String, *, {0}, * )", [iS])
      Console.WriteLine("Original      : {0}", myStr)
      Console.WriteLine("No options    : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           U" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H0308), [iS]), - 1)
      PrintMarker("           u" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H0308), [iS]), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS]), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS]), - 1)
      Console.WriteLine("Ordinal       : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           U" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H0308), [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("           u" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H0308), [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.Ordinal), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.Ordinal), - 1)
      Console.WriteLine("IgnoreCase    : {0}{1}", myT1, myStr.Substring([iS]))
      PrintMarker("           U" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H0308), [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("           u" & ChrW(&H0308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H0308), [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase), - 1)
      PrintMarker("             : ", myComp.IndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase), - 1)

      myT1 = New [String]("-"c, myStr.Length - [iS] - 1)
      Console.WriteLine("LastIndexOf( String, *, {0}, * )", [iS])
      Console.WriteLine("Original      : {0}", myStr)
      Console.WriteLine("No options    : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           U" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "U" & ChrW(&H0308), [iS]))
      PrintMarker("           u" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "u" & ChrW(&H0308), [iS]))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS]))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS]))
      Console.WriteLine("Ordinal       : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           U" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "U" & ChrW(&H0308), [iS], CompareOptions.Ordinal))
      PrintMarker("           u" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "u" & ChrW(&H0308), [iS], CompareOptions.Ordinal))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.Ordinal))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.Ordinal))
      Console.WriteLine("IgnoreCase    : {0}{1}", myStr.Substring(0, [iS] + 1), myT1)
      PrintMarker("           U" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "U" & ChrW(&H0308), [iS], CompareOptions.IgnoreCase))
      PrintMarker("           u" & ChrW(&H0308) & " : ", - 1, myComp.LastIndexOf(myStr, "u" & ChrW(&H0308), [iS], CompareOptions.IgnoreCase))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase))
      PrintMarker("             : ", - 1, myComp.LastIndexOf(myStr, ""c, [iS], CompareOptions.IgnoreCase))

   End Sub 'Main

   Public Shared Sub PrintMarker(Prefix As [String], First As Integer, Last As Integer)

      ' Determines the size of the array to create.
      Dim mySize As Integer
      If Last > First Then
         mySize = Last
      Else
         mySize = First
      End If 

      If mySize > - 1 Then

         ' Creates an array of Char to hold the markers.
         Dim myCharArr(mySize + 1) As [Char]

         ' Inserts the appropriate markers.
         If First > - 1 Then
            myCharArr(First) = "f"c
         End If
         If Last > - 1 Then
            myCharArr(Last) = "l"c
         End If
         If First = Last Then
            myCharArr(First) = "b"c
         End If 

         ' Displays the array of Char as a String.
         Console.WriteLine("{0}{1}", Prefix, New [String](myCharArr))
      
      Else
         Console.WriteLine(Prefix)

      End If 

   End Sub 'PrintMarker

End Class 'SamplesCompareInfo 


'This code produces the following output.
'
'IndexOf( String, *, 20, * )
'Original      : Is AE or ae the same as  or ?
'No options    : -------------------- as  or ?
'           AE :                         f
'           ae :                              f
'             :                         f
'             :                              f
'Ordinal       : -------------------- as  or ?
'           AE :
'           ae :
'             :                         f
'             :                              f
'IgnoreCase    : -------------------- as  or ?
'           AE :                         f
'           ae :                         f
'             :                         f
'             :                         f
'LastIndexOf( String, *, 20, * )
'Original      : Is AE or ae the same as  or ?
'No options    : Is AE or ae the same ----------
'           AE :    l
'           ae :          l
'             :    l
'             :          l
'Ordinal       : Is AE or ae the same ----------
'           AE :    l
'           ae :          l
'             :
'             :
'IgnoreCase    : Is AE or ae the same ----------
'           AE :          l
'           ae :          l
'             :          l
'             :          l
'
'IndexOf( String, *, 20, * )
'Original      : Is U" or u" the same as  or ?
'No options    : -------------------- as  or ?
'           U" :                         f
'           u" :                              f
'             :                         f
'             :                              f
'Ordinal       : -------------------- as  or ?
'           U" :
'           u" :
'             :                         f
'             :                              f
'IgnoreCase    : -------------------- as  or ?
'           U" :                         f
'           u" :                         f
'             :                         f
'             :                         f
'LastIndexOf( String, *, 20, * )
'Original      : Is U" or u" the same as  or ?
'No options    : Is U" or u" the same ----------
'           U" :    l
'           u" :          l
'             :    l
'             :          l
'Ordinal       : Is U" or u" the same ----------
'           U" :    l
'           u" :          l
'             :
'             :
'IgnoreCase    : Is U" or u" the same ----------
'           U" :          l
'           u" :          l
'             :          l
'             :          l


[C#] 
using System;
using System.Globalization;

public class SamplesCompareInfo  {

   public static void Main()  {

      // Creates CompareInfo for the InvariantCulture.
      CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;

      // iS is the starting index of the substring.
      int iS = 20;
      // myT1 is the string used for padding.
      String myT1;

      // Searches for the ligature .
      String myStr = "Is AE or ae the same as  or ?";
      Console.WriteLine();

      myT1 = new String( '-', iS );
      Console.WriteLine( "IndexOf( String, *, {0}, * )", iS );
      Console.WriteLine( "Original      : {0}", myStr );
      Console.WriteLine( "No options    : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           AE : ", myComp.IndexOf( myStr, "AE", iS ), -1 );
      PrintMarker( "           ae : ", myComp.IndexOf( myStr, "ae", iS ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS ), -1 );
      Console.WriteLine( "Ordinal       : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           AE : ", myComp.IndexOf( myStr, "AE", iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "           ae : ", myComp.IndexOf( myStr, "ae", iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.Ordinal ), -1 );
      Console.WriteLine( "IgnoreCase    : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           AE : ", myComp.IndexOf( myStr, "AE", iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "           ae : ", myComp.IndexOf( myStr, "ae", iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.IgnoreCase ), -1 );

      myT1 = new String( '-', myStr.Length - iS - 1 );
      Console.WriteLine( "LastIndexOf( String, *, {0}, * )", iS );
      Console.WriteLine( "Original      : {0}", myStr );
      Console.WriteLine( "No options    : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           AE : ", -1, myComp.LastIndexOf( myStr, "AE", iS ) );
      PrintMarker( "           ae : ", -1, myComp.LastIndexOf( myStr, "ae", iS ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS ) );
      Console.WriteLine( "Ordinal       : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           AE : ", -1, myComp.LastIndexOf( myStr, "AE", iS, CompareOptions.Ordinal ) );
      PrintMarker( "           ae : ", -1, myComp.LastIndexOf( myStr, "ae", iS, CompareOptions.Ordinal ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.Ordinal ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.Ordinal ) );
      Console.WriteLine( "IgnoreCase    : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           AE : ", -1, myComp.LastIndexOf( myStr, "AE", iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "           ae : ", -1, myComp.LastIndexOf( myStr, "ae", iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.IgnoreCase ) );

      // Searches for the combining character sequence Latin capital letter U with diaeresis or Latin small letter u with diaeresis.
      myStr = "Is \u0055\u0308 or \u0075\u0308 the same as \u00DC or \u00FC?";
      Console.WriteLine();

      myT1 = new String( '-', iS );
      Console.WriteLine( "IndexOf( String, *, {0}, * )", iS );
      Console.WriteLine( "Original      : {0}", myStr );
      Console.WriteLine( "No options    : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           U\u0308 : ", myComp.IndexOf( myStr, "U\u0308", iS ), -1 );
      PrintMarker( "           u\u0308 : ", myComp.IndexOf( myStr, "u\u0308", iS ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS ), -1 );
      Console.WriteLine( "Ordinal       : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           U\u0308 : ", myComp.IndexOf( myStr, "U\u0308", iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "           u\u0308 : ", myComp.IndexOf( myStr, "u\u0308", iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.Ordinal ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.Ordinal ), -1 );
      Console.WriteLine( "IgnoreCase    : {0}{1}", myT1, myStr.Substring( iS ) );
      PrintMarker( "           U\u0308 : ", myComp.IndexOf( myStr, "U\u0308", iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "           u\u0308 : ", myComp.IndexOf( myStr, "u\u0308", iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.IgnoreCase ), -1 );
      PrintMarker( "             : ", myComp.IndexOf( myStr, '', iS, CompareOptions.IgnoreCase ), -1 );

      myT1 = new String( '-', myStr.Length - iS - 1 );
      Console.WriteLine( "LastIndexOf( String, *, {0}, * )", iS );
      Console.WriteLine( "Original      : {0}", myStr );
      Console.WriteLine( "No options    : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           U\u0308 : ", -1, myComp.LastIndexOf( myStr, "U\u0308", iS ) );
      PrintMarker( "           u\u0308 : ", -1, myComp.LastIndexOf( myStr, "u\u0308", iS ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS ) );
      Console.WriteLine( "Ordinal       : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           U\u0308 : ", -1, myComp.LastIndexOf( myStr, "U\u0308", iS, CompareOptions.Ordinal ) );
      PrintMarker( "           u\u0308 : ", -1, myComp.LastIndexOf( myStr, "u\u0308", iS, CompareOptions.Ordinal ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.Ordinal ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.Ordinal ) );
      Console.WriteLine( "IgnoreCase    : {0}{1}", myStr.Substring( 0, iS + 1 ), myT1 );
      PrintMarker( "           U\u0308 : ", -1, myComp.LastIndexOf( myStr, "U\u0308", iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "           u\u0308 : ", -1, myComp.LastIndexOf( myStr, "u\u0308", iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.IgnoreCase ) );
      PrintMarker( "             : ", -1, myComp.LastIndexOf( myStr, '', iS, CompareOptions.IgnoreCase ) );

   }

   public static void PrintMarker( String Prefix, int First, int Last )  {

      // Determines the size of the array to create.
      int mySize;
      if ( Last > First )
         mySize = Last;
      else
         mySize = First;

      if ( mySize > -1 )  {

         // Creates an array of Char to hold the markers.
         Char[] myCharArr = new Char[mySize+1];

         // Inserts the appropriate markers.
         if ( First > -1 )
         myCharArr[First] = 'f';
         if ( Last > -1 )
            myCharArr[Last] = 'l';
         if ( First == Last )
         myCharArr[First] = 'b';

         // Displays the array of Char as a String.
         Console.WriteLine( "{0}{1}", Prefix, new String( myCharArr ) );

      }
      else
         Console.WriteLine( Prefix );

   }

}


/*
This code produces the following output.

IndexOf( String, *, 20, * )
Original      : Is AE or ae the same as  or ?
No options    : -------------------- as  or ?
           AE :                         f
           ae :                              f
             :                         f
             :                              f
Ordinal       : -------------------- as  or ?
           AE :
           ae :
             :                         f
             :                              f
IgnoreCase    : -------------------- as  or ?
           AE :                         f
           ae :                         f
             :                         f
             :                         f
LastIndexOf( String, *, 20, * )
Original      : Is AE or ae the same as  or ?
No options    : Is AE or ae the same ----------
           AE :    l
           ae :          l
             :    l
             :          l
Ordinal       : Is AE or ae the same ----------
           AE :    l
           ae :          l
             :
             :
IgnoreCase    : Is AE or ae the same ----------
           AE :          l
           ae :          l
             :          l
             :          l

IndexOf( String, *, 20, * )
Original      : Is U" or u" the same as  or ?
No options    : -------------------- as  or ?
           U" :                         f
           u" :                              f
             :                         f
             :                              f
Ordinal       : -------------------- as  or ?
           U" :
           u" :
             :                         f
             :                              f
IgnoreCase    : -------------------- as  or ?
           U" :                         f
           u" :                         f
             :                         f
             :                         f
LastIndexOf( String, *, 20, * )
Original      : Is U" or u" the same as  or ?
No options    : Is U" or u" the same ----------
           U" :    l
           u" :          l
             :    l
             :          l
Ordinal       : Is U" or u" the same ----------
           U" :    l
           u" :          l
             :
             :
IgnoreCase    : Is U" or u" the same ----------
           U" :          l
           u" :          l
             :          l
             :          l

*/

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Globalization;

void PrintMarker( String* Prefix, int First, int Last )  {

   // Determines the size of the array to create.
   int mySize;
   if ( Last > First )
      mySize = Last;
   else
      mySize = First;

   if ( mySize > -1 )  {

      // Creates an array of Char to hold the markers.
      Char myCharArr[] = new Char[mySize+1];

      // Inserts the appropriate markers.
      if ( First > -1 )
         myCharArr[First] = 'f';
      if ( Last > -1 )
         myCharArr[Last] = 'l';
      if ( First == Last )
         myCharArr[First] = 'b';

      // Displays the array of Char as a String.
      Console::WriteLine( S"{0}{1}", Prefix, new String( myCharArr ) );

   }
   else
      Console::WriteLine( Prefix );

}


int main()  {

   // Creates CompareInfo for the InvariantCulture.
   CompareInfo* myComp = CultureInfo::InvariantCulture->CompareInfo;

   // iS is the starting index of the substring.
   int iS = 20;
   // myT1 is the string used for padding.
   String* myT1;

   // Searches for the ligature .
   String* myStr = S"Is AE or ae the same as  or ?";
   Console::WriteLine();

   myT1 = new String( '-', iS );
   Console::WriteLine( S"IndexOf( String, *, {0}, * )", __box(iS));
   Console::WriteLine( S"Original      : {0}", myStr );
   Console::WriteLine( S"No options    : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           AE : ", myComp->IndexOf( myStr, S"AE", iS ), -1 );
   PrintMarker( S"           ae : ", myComp->IndexOf( myStr, S"ae", iS ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS ), -1 );
   Console::WriteLine( S"Ordinal       : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           AE : ", myComp->IndexOf( myStr, S"AE", iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"           ae : ", myComp->IndexOf( myStr, S"ae", iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::Ordinal ), -1 );
   Console::WriteLine( S"IgnoreCase    : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           AE : ", myComp->IndexOf( myStr, S"AE", iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"           ae : ", myComp->IndexOf( myStr, S"ae", iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ), -1 );

   myT1 = new String( '-', myStr->Length - iS - 1 );
   Console::WriteLine( S"LastIndexOf( String, *, {0}, * )", __box(iS));
   Console::WriteLine( S"Original      : {0}", myStr );
   Console::WriteLine( S"No options    : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           AE : ", -1, myComp->LastIndexOf( myStr, S"AE", iS ) );
   PrintMarker( S"           ae : ", -1, myComp->LastIndexOf( myStr, S"ae", iS ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS ) );
   Console::WriteLine( S"Ordinal       : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           AE : ", -1, myComp->LastIndexOf( myStr, S"AE", iS, CompareOptions::Ordinal ) );
   PrintMarker( S"           ae : ", -1, myComp->LastIndexOf( myStr, S"ae", iS, CompareOptions::Ordinal ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::Ordinal ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::Ordinal ) );
   Console::WriteLine( S"IgnoreCase    : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           AE : ", -1, myComp->LastIndexOf( myStr, S"AE", iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"           ae : ", -1, myComp->LastIndexOf( myStr, S"ae", iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ) );

   // Searches for the combining character sequence Latin capital letter U with diaeresis or Latin small letter u with diaeresis.
   myStr = S"Is U\u0308 or u\u0308 the same as \u00DC or \u00FC?";
   Console::WriteLine();

   myT1 = new String( '-', iS );
   Console::WriteLine( S"IndexOf( String, *, {0}, * )", __box(iS));
   Console::WriteLine( S"Original      : {0}", myStr );
   Console::WriteLine( S"No options    : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           U\u0308 : ", myComp->IndexOf( myStr, S"U\u0308", iS ), -1 );
   PrintMarker( S"           u\u0308 : ", myComp->IndexOf( myStr, S"u\u0308", iS ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS ), -1 );
   Console::WriteLine( S"Ordinal       : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           U\u0308 : ", myComp->IndexOf( myStr, S"U\u0308", iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"           u\u0308 : ", myComp->IndexOf( myStr, S"u\u0308", iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::Ordinal ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::Ordinal ), -1 );
   Console::WriteLine( S"IgnoreCase    : {0}{1}", myT1, myStr->Substring( iS ) );
   PrintMarker( S"           U\u0308 : ", myComp->IndexOf( myStr, S"U\u0308", iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"           u\u0308 : ", myComp->IndexOf( myStr, S"u\u0308", iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ), -1 );
   PrintMarker( S"             : ", myComp->IndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ), -1 );

   myT1 = new String( '-', myStr->Length - iS - 1 );
   Console::WriteLine( S"LastIndexOf( String, *, {0}, * )", __box(iS));
   Console::WriteLine( S"Original      : {0}", myStr );
   Console::WriteLine( S"No options    : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           U\u0308 : ", -1, myComp->LastIndexOf( myStr, S"U\u0308", iS ) );
   PrintMarker( S"           u\u0308 : ", -1, myComp->LastIndexOf( myStr, S"u\u0308", iS ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS ) );
   Console::WriteLine( S"Ordinal       : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           U\u0308 : ", -1, myComp->LastIndexOf( myStr, S"U\u0308", iS, CompareOptions::Ordinal ) );
   PrintMarker( S"           u\u0308 : ", -1, myComp->LastIndexOf( myStr, S"u\u0308", iS, CompareOptions::Ordinal ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::Ordinal ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::Ordinal ) );
   Console::WriteLine( S"IgnoreCase    : {0}{1}", myStr->Substring( 0, iS + 1 ), myT1 );
   PrintMarker( S"           U\u0308 : ", -1, myComp->LastIndexOf( myStr, S"U\u0308", iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"           u\u0308 : ", -1, myComp->LastIndexOf( myStr, S"u\u0308", iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ) );
   PrintMarker( S"             : ", -1, myComp->LastIndexOf( myStr, L'', iS, CompareOptions::IgnoreCase ) );

}

/*
This code produces the following output.

IndexOf( String, *, 20, * )
Original      : Is AE or ae the same as  or ?
No options    : -------------------- as  or ?
           AE :                         f
           ae :                              f
             :                         f
             :                              f
Ordinal       : -------------------- as  or ?
           AE :
           ae :
             :                         f
             :                              f
IgnoreCase    : -------------------- as  or ?
           AE :                         f
           ae :                         f
             :                         f
             :                         f
LastIndexOf( String, *, 20, * )
Original      : Is AE or ae the same as  or ?
No options    : Is AE or ae the same ----------
           AE :    l
           ae :          l
             :    l
             :          l
Ordinal       : Is AE or ae the same ----------
           AE :    l
           ae :          l
             :
             :
IgnoreCase    : Is AE or ae the same ----------
           AE :          l
           ae :          l
             :          l
             :          l

IndexOf( String, *, 20, * )
Original      : Is U" or u" the same as  or ?
No options    : -------------------- as  or ?
           U" :                         f
           u" :                              f
             :                         f
             :                              f
Ordinal       : -------------------- as  or ?
           U" :
           u" :
             :                         f
             :                              f
IgnoreCase    : -------------------- as  or ?
           U" :                         f
           u" :                         f
             :                         f
             :                         f
LastIndexOf( String, *, 20, * )
Original      : Is U" or u" the same as  or ?
No options    : Is U" or u" the same ----------
           U" :    l
           u" :          l
             :    l
             :          l
Ordinal       : Is U" or u" the same ----------
           U" :    l
           u" :          l
             :
             :
IgnoreCase    : Is U" or u" the same ----------
           U" :          l
           u" :          l
             :          l
             :          l

*/

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

CompareInfo クラス | CompareInfo メンバ | System.Globalization 名前空間 | CompareInfo.LastIndexOf オーバーロードの一覧 | IndexOf