C# | Char.IsSurrogatePair(String, Int32) Method
Last Updated :
11 Jul, 2025
This method is used to indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair or not.
Syntax:
public static bool IsSurrogatePair (string s, int index);
Parameters:
s: It is a String.
index: It is the starting position of the pair of characters to evaluate within s.
Return Value: This method returns
true if the
s parameter includes adjacent characters at positions
index and
index + 1, and the numeric value of the character at position index ranges from
U+D800
through
U+DBFF
, and the numeric value of the character at position
index + 1 ranges from
U+DC00
through
U+DFFF
otherwise it returns
false.
Exceptions:
- ArgumentNullException: If the s is null.
- ArgumentOutOfRangeException: If the index is not a position within s.
Below programs illustrate the use of
Char.IsSurrogatePair(String, Int32) Method:
Example 1:
csharp
// C# program to demonstrate the
// Char.IsSurrogatePair(String,
// Int32) Method
using System;
class GFG {
// Main Method
public static void Main()
{
try {
// calling check() Method
check("1234", 3);
check("Tsunami", 3);
check("psyc0lo", 4);
// declaring and initializing string s1
string s1 = new String(new char[] {'a',
'\uD800', '\uDC00', 'z' });
check(s1, 1);
}
catch (ArgumentNullException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
catch (ArgumentOutOfRangeException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
// Defining check() method
public static void check(string s, int i)
{
// checking condition
// using IsSurrogatePair() Method
bool val = Char.IsSurrogatePair(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
else
Console.WriteLine("String '{0}' does't contain any "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
}
}
Output:
String '1234' does't contain any Surrogate pairs at s[3] and s[4]
String 'Tsunami' does't contain any Surrogate pairs at s[3] and s[4]
String 'psyc0lo' does't contain any Surrogate pairs at s[4] and s[5]
String 'að??z' contains Surrogate pairs at s[1] and s[2]
Example 2: For
ArgumentNullException
csharp
// C# program to demonstrate the
// Char.IsSurrogatePair(String,
// Int32) Method
using System;
class GFG {
// Main Method
public static void Main()
{
try {
// calling check() Method
check("1234", 3);
check("Tsunami", 3);
check("psyc0lo", 4);
// declaring and initializing string s1
string s1 = new String(new char[] {'a',
'\uD800', '\uDC00', 'z' });
check(s1, 1);
Console.WriteLine("");
Console.WriteLine("s is null");
check(null, 4);
}
catch (ArgumentNullException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
catch (ArgumentOutOfRangeException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
// Defining check() method
public static void check(string s, int i)
{
// checking condition
// using IsSurrogatePair() Method
bool val = Char.IsSurrogatePair(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
else
Console.WriteLine("String '{0}' does't contain any "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
}
}
Output:
String '1234' does't contain any Surrogate pairs at s[3] and s[4]
String 'Tsunami' does't contain any Surrogate pairs at s[3] and s[4]
String 'psyc0lo' does't contain any Surrogate pairs at s[4] and s[5]
String 'að??z' contains Surrogate pairs at s[1] and s[2]
s is null
Exception Thrown: System.ArgumentNullException
Example 3: For
ArgumentOutOfRangeException
csharp
// C# program to demonstrate the
// Char.IsSurrogatePair(String,
// Int32) Method
using System;
class GFG {
// Main Method
public static void Main()
{
try {
// calling check() Method
check("1234", 3);
check("Tsunami", 3);
check("psyc0lo", 4);
// declaring and initializing string s1
string s1 = new String(new char[] {'a',
'\uD800', '\uDC00', 'z' });
check(s1, 1);
Console.WriteLine("");
Console.WriteLine("index is less than zero");
check("null", -4);
}
catch (ArgumentNullException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
catch (ArgumentOutOfRangeException e) {
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
// Defining check() method
public static void check(string s, int i)
{
// checking condition
// using IsSurrogatePair() Method
bool val = Char.IsSurrogatePair(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
else
Console.WriteLine("String '{0}' does not contain any "
+ "Surrogate pairs at s[{1}] and s[{2}]",
s, i, i + 1);
}
}
Output:
String '1234' does not contain any Surrogate pairs at s[3] and s[4]
String 'Tsunami' does not contain any Surrogate pairs at s[3] and s[4]
String 'psyc0lo' does not contain any Surrogate pairs at s[4] and s[5]
String 'að??z' contains Surrogate pairs at s[1] and s[2]
index is less than zero
Exception Thrown: System.ArgumentOutOfRangeException
Reference:
Similar Reads
C# | Char.IsSurrogate(String, Int32) Method This method is used to indicates whether the character at the specified position in a specified string has a surrogate code unit or not. Syntax: public static bool IsSurrogate (string s, int index); Parameters: s: It is a String. index: It is the character position to evaluate in s. Return Value: Th
4 min read
C# | Char.IsLowSurrogate(String, Int32) Method This method is used to indicates whether the Char object at the specified position in a string is a low surrogate or not. Syntax: public static bool IsLowSurrogate (string s, int index); Parameters: s: It is a String. index: It is the character position to evaluate in s. Return Value: This method re
4 min read
C# | Char.IsHighSurrogate(String, Int32) Method This method is used to indicates whether the Char object at the specified position in a string is a high surrogate or not. Syntax: public static bool IsHighSurrogate (string s, int index); Parameters: s: It is a String. index: It is the character position in s. Return Value: This method returns true
4 min read
C# | Char.IsControl(String, Int32) Method This method is used to indicates whether the character at the specified position in a specified string is categorized as a control character. Syntax: public static bool IsControl (string s, int index); Parameters: s: It is the String. index: It is the character position in s. Return Value: This meth
3 min read
C# | CharEnumerator.ToString() Method CharEnumerator.ToString() Method is used to get a string that represents the current object. It is inherited from the Object Class. Syntax: public virtual string ToString(); Return Value: This method returns a string which represents the current CharEnumerator object. Below are the programs to illus
2 min read
C# | Char.ConvertToUtf32(String, Int32) Method This method is used to converts the value of a UTF-16 encoded character or surrogate pair at a specified position in a string into a Unicode code point. Syntax: public static int ConvertToUtf32 (string s, int index); Parameters: s: A string that contains a character or surrogate pair. index: The ind
3 min read