C# | Char.IsSurrogate(String, Int32) Method
Last Updated :
11 Jul, 2025
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: This method returns true if the character at position index in s is either a high surrogate or a low surrogate otherwise, it returns false. Exceptions:
- ArgumentNullException: If the s is null.
- ArgumentOutOfRangeException: If the index is less than zero or greater than the last position in s.
Below programs illustrate the use of Char.IsSurrogate(String, Int32) Method: Example 1:
csharp
// C# program to demonstrate
// Char.IsSurrogate(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, 2);
}
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
bool val = Char.IsSurrogate(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate value at index {1} ",s, i);
else
Console.WriteLine("String '{0}' does't contain any"
+ "Surrogate value at index {1}",s, i);
}
}
Output:String '1234' does't contain anySurrogate value at index 3
String 'Tsunami' does't contain anySurrogate value at index 3
String 'psyc0lo' does't contain anySurrogate value at index 4
String 'að??z' contains Surrogate value at index 2
Example 2: For ArgumentNullException
csharp
// C# program to demonstrate
// Char.IsSurrogate(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, 2);
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
bool val = Char.IsSurrogate(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate value at index {1} ",s, i);
else
Console.WriteLine("String '{0}' does't contain any"
+ "Surrogate value at index {1}", s, i);
}
}
Output:String '1234' does't contain anySurrogate value at index 3
String 'Tsunami' does't contain anySurrogate value at index 3
String 'psyc0lo' does't contain anySurrogate value at index 4
String 'að??z' contains Surrogate value at index 2
s is null
Exception Thrown: System.ArgumentNullException
Example 3: For ArgumentOutOfRangeException
csharp
// C# program to demonstrate
// Char.IsSurrogate(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, 2);
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
bool val = Char.IsSurrogate(s, i);
// checking
if (val)
Console.WriteLine("String '{0}' contains "
+ "Surrogate value at index {1} ", s, i);
else
Console.WriteLine("String '{0}' does't contain any"
+ "Surrogate value at index {1}", s, i);
}
}
Output:String '1234' does't contain anySurrogate value at index 3
String 'Tsunami' does't contain anySurrogate value at index 3
String 'psyc0lo' does't contain anySurrogate value at index 4
String 'að??z' contains Surrogate value at index 2
index is less than zero
Exception Thrown: System.ArgumentOutOfRangeException
Reference:
Similar Reads
C# | Char.GetNumericValue() Method In C#, Char.GetNumericValue() is a System.Char struct method which is used to convert a numeric Unicode character into a double-precision floating-point number. The numeric value must belong to UnicodeCategory, i.e DecimalDigitNumber, LetterNumber, or OtherNumber. This method can be overloaded by pa
2 min read
C# | Char.GetTypeCode() Method with Examples This method is used to return the TypeCode for value type Char. Syntax: public TypeCode GetTypeCode (); Return Value: This method returns the enumerated constant, Char.Below programs illustrate the use of Char.GetTypeCode() Method:Example 1: csharp // C# program to demonstrate // Char.GetTypeCode()
2 min read
C# | Char.GetUnicodeCategory(String, Int32) Method with Examples This method is used to categorizes the character at the specified position in a specified string into a group identified by one of the UnicodeCategory values. Syntax: public static System.Globalization.UnicodeCategory GetUnicodeCategory (string s, int index); Parameters: s: It is the String.index: I
3 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# | Char.IsDigit() Method In C#, Char.IsDigit() is a System.Char struct method which is used to check whether a Unicode character can be categorized as a decimal digit(radix 10) or not. Valid digits will be the members of the UnicodeCategory.DecimalDigitNumber category. This method can be overloaded by passing different type
3 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.IsLetter() Method In C#, Char.IsLetter() is a System.Char struct method which is used to check whether a Unicode character can be categorized as a Unicode letter or not. Unicode letters consist of the Uppercase letters, Lowercase letters, Title case letters, Modifiers letters and Other letters. This method can be ove
3 min read
C# | Char.IsLetterOrDigit() Method In C#, Char.IsLetterOrDigit() is a System.Char struct method which is used to check whether a Unicode character can be categorized as a letter or decimal digit. Valid letters and decimal digits will be the members of the UnicodeCategory: UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLet
3 min read
C# | Char.IsLower() Method In C#, Char.IsLower() is a System.Char struct method which is used to check whether a Unicode character can be categorized as a lowercase letter or not. Valid lowercase letters will be the members of UnicodeCategory: LowercaseLetter. This method can be overloaded by passing different type and number
3 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