Open In App

C# | Char.IsSurrogatePair(String, Int32) Method

Last Updated : 11 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
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