CompareInfo.IndexOf Method (String, String)
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Searches for the specified substring and returns the zero-based index of the first occurrence within the entire source string.
Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Overridable Function IndexOf ( _
source As String, _
value As String _
) As Integer
public virtual int IndexOf(
string source,
string value
)
Parameters
- source
Type: System.String
The string to search.
- value
Type: System.String
The string to locate within source.
Return Value
Type: System.Int32
The zero-based index of the first occurrence of value within the entire source, if found; otherwise, -1.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | source is nulla null reference (Nothing in Visual Basic). -or- value is nulla null reference (Nothing in Visual Basic). |
Remarks
The source string is searched forward starting at the beginning of the string and ending at the end of the string.
This overload performs a culture-sensitive search. A Unicode value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture. To perform an ordinal (culture-insensitive) search, where the Unicode values are compared, the application should use one of the overloads that accepts a CompareOptions value as a parameter and use the Ordinal value.
Examples
The following example determines the indexes of the first and last occurrences of a character or a substring within a string.
Imports System.Globalization
Public Class Example
Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
' Creates CompareInfo for the InvariantCulture.
Dim myComp As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Searches for the ligature Æ.
Dim myStr As [String] = "Is AE or ae the same as Æ or æ?"
outputBlock.Text &= vbCrLf
outputBlock.Text += String.Format("No options : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE"), myComp.LastIndexOf(myStr, "AE"))
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae"), myComp.LastIndexOf(myStr, "ae"))
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, "Æ"c), myComp.LastIndexOf(myStr, "Æ"c))
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, "æ"c), myComp.LastIndexOf(myStr, "æ"c))
outputBlock.Text += String.Format("Ordinal : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "AE", CompareOptions.Ordinal))
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "ae", CompareOptions.Ordinal))
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, "Æ"c, CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "Æ"c, CompareOptions.Ordinal))
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, "æ"c, CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "æ"c, CompareOptions.Ordinal))
outputBlock.Text += String.Format("IgnoreCase : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "AE", CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "ae", CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, "Æ"c, CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "Æ"c, CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, "æ"c, CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "æ"c, CompareOptions.IgnoreCase))
' Searches for the combining character sequence Latin capital letter U with diaeresis or Latin small letter u with diaeresis.
myStr = "Is " & ChrW(&H55) & ChrW(&H308) & " or " & ChrW(&H75) & ChrW(&H308) & " the same as " & ChrW(&HDC) & " or " & ChrW(&HFC) & "?"
outputBlock.Text &= vbCrLf
outputBlock.Text += String.Format("No options : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " U" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H308)), myComp.LastIndexOf(myStr, "U" & ChrW(&H308)))
PrintMarker(outputBlock, " u" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H308)), myComp.LastIndexOf(myStr, "u" & ChrW(&H308)))
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, "Ü"c), myComp.LastIndexOf(myStr, "Ü"c))
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, "ü"c), myComp.LastIndexOf(myStr, "ü"c))
outputBlock.Text += String.Format("Ordinal : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " U" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H308), CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "U" & ChrW(&H308), CompareOptions.Ordinal))
PrintMarker(outputBlock, " u" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H308), CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "u" & ChrW(&H308), CompareOptions.Ordinal))
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, "Ü"c, CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "Ü"c, CompareOptions.Ordinal))
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, "ü"c, CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "ü"c, CompareOptions.Ordinal))
outputBlock.Text += String.Format("IgnoreCase : {0}", myStr) & vbCrLf
PrintMarker(outputBlock, " U" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "U" & ChrW(&H308), CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "U" & ChrW(&H308), CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " u" & ChrW(&H308) & " : ", myComp.IndexOf(myStr, "u" & ChrW(&H308), CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "u" & ChrW(&H308), CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, "Ü"c, CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "Ü"c, CompareOptions.IgnoreCase))
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, "ü"c, CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "ü"c, CompareOptions.IgnoreCase))
End Sub 'Main
Public Shared Sub PrintMarker(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal Prefix As [String], ByVal First As Integer, ByVal 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.
outputBlock.Text += String.Format("{0}{1}", Prefix, New [String](myCharArr)) & vbCrLf
Else
outputBlock.Text &= Prefix & vbCrLf
End If
End Sub 'PrintMarker
End Class 'SamplesCompareInfo
'This code produces the following output.
'
'No options : Is AE or ae the same as Æ or æ?
' AE : f l
' ae : f l
' Æ : f l
' æ : f l
'Ordinal : Is AE or ae the same as Æ or æ?
' AE : b
' ae : b
' Æ : b
' æ : b
'IgnoreCase : Is AE or ae the same as Æ or æ?
' AE : f l
' ae : f l
' Æ : f l
' æ : f l
'
'No options : Is U" or u" the same as Ü or ü?
' U" : f l
' u" : f l
' Ü : f l
' ü : f l
'Ordinal : Is U" or u" the same as Ü or ü?
' U" : b
' u" : b
' Ü : b
' ü : b
'IgnoreCase : Is U" or u" the same as Ü or ü?
' U" : f l
' u" : f l
' Ü : f l
' ü : f l
using System;
using System.Globalization;
public class Example
{
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
// Creates CompareInfo for the InvariantCulture.
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
// Searches for the ligature Æ.
String myStr = "Is AE or ae the same as Æ or æ?";
outputBlock.Text += "\n";
outputBlock.Text += String.Format("No options : {0}", myStr) + "\n";
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE"), myComp.LastIndexOf(myStr, "AE"));
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae"), myComp.LastIndexOf(myStr, "ae"));
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, 'Æ'), myComp.LastIndexOf(myStr, 'Æ'));
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, 'æ'), myComp.LastIndexOf(myStr, 'æ'));
outputBlock.Text += String.Format("Ordinal : {0}", myStr) + "\n";
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "AE", CompareOptions.Ordinal));
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "ae", CompareOptions.Ordinal));
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, 'Æ', CompareOptions.Ordinal), myComp.LastIndexOf(myStr, 'Æ', CompareOptions.Ordinal));
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, 'æ', CompareOptions.Ordinal), myComp.LastIndexOf(myStr, 'æ', CompareOptions.Ordinal));
outputBlock.Text += String.Format("IgnoreCase : {0}", myStr) + "\n";
PrintMarker(outputBlock, " AE : ", myComp.IndexOf(myStr, "AE", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "AE", CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " ae : ", myComp.IndexOf(myStr, "ae", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "ae", CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " Æ : ", myComp.IndexOf(myStr, 'Æ', CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, 'Æ', CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " æ : ", myComp.IndexOf(myStr, 'æ', CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, 'æ', 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?";
outputBlock.Text += "\n";
outputBlock.Text += String.Format("No options : {0}", myStr) + "\n";
PrintMarker(outputBlock, " U\u0308 : ", myComp.IndexOf(myStr, "U\u0308"), myComp.LastIndexOf(myStr, "U\u0308"));
PrintMarker(outputBlock, " u\u0308 : ", myComp.IndexOf(myStr, "u\u0308"), myComp.LastIndexOf(myStr, "u\u0308"));
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, 'Ü'), myComp.LastIndexOf(myStr, 'Ü'));
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, 'ü'), myComp.LastIndexOf(myStr, 'ü'));
outputBlock.Text += String.Format("Ordinal : {0}", myStr) + "\n";
PrintMarker(outputBlock, " U\u0308 : ", myComp.IndexOf(myStr, "U\u0308", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "U\u0308", CompareOptions.Ordinal));
PrintMarker(outputBlock, " u\u0308 : ", myComp.IndexOf(myStr, "u\u0308", CompareOptions.Ordinal), myComp.LastIndexOf(myStr, "u\u0308", CompareOptions.Ordinal));
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, 'Ü', CompareOptions.Ordinal), myComp.LastIndexOf(myStr, 'Ü', CompareOptions.Ordinal));
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, 'ü', CompareOptions.Ordinal), myComp.LastIndexOf(myStr, 'ü', CompareOptions.Ordinal));
outputBlock.Text += String.Format("IgnoreCase : {0}", myStr) + "\n";
PrintMarker(outputBlock, " U\u0308 : ", myComp.IndexOf(myStr, "U\u0308", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "U\u0308", CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " u\u0308 : ", myComp.IndexOf(myStr, "u\u0308", CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, "u\u0308", CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " Ü : ", myComp.IndexOf(myStr, 'Ü', CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, 'Ü', CompareOptions.IgnoreCase));
PrintMarker(outputBlock, " ü : ", myComp.IndexOf(myStr, 'ü', CompareOptions.IgnoreCase), myComp.LastIndexOf(myStr, 'ü', CompareOptions.IgnoreCase));
}
public static void PrintMarker(System.Windows.Controls.TextBlock outputBlock, 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.
outputBlock.Text += String.Format("{0}{1}", Prefix, new String(myCharArr)) + "\n";
}
else
outputBlock.Text += Prefix + "\n";
}
}
/*
This code produces the following output.
No options : Is AE or ae the same as Æ or æ?
AE : f l
ae : f l
Æ : f l
æ : f l
Ordinal : Is AE or ae the same as Æ or æ?
AE : b
ae : b
Æ : b
æ : b
IgnoreCase : Is AE or ae the same as Æ or æ?
AE : f l
ae : f l
Æ : f l
æ : f l
No options : Is U" or u" the same as Ü or ü?
U" : f l
u" : f l
Ü : f l
ü : f l
Ordinal : Is U" or u" the same as Ü or ü?
U" : b
u" : b
Ü : b
ü : b
IgnoreCase : Is U" or u" the same as Ü or ü?
U" : f l
u" : f l
Ü : f l
ü : f l
*/
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
XNA Framework
Supported in: Xbox 360, Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.