📌  相关文章
📜  C#| Char.IsHighSurrogate(String,Int32)方法

📅  最后修改于: 2021-05-30 01:06:26             🧑  作者: Mango

此方法用于指示字符串指定位置的Char对象是否为高替代对象。

句法:

public static bool IsHighSurrogate (string s, int index);

参数:

返回值:如果s参数中指定字符的数值范围从U+D800U+DBFF;则此方法返回true;否则,此方法返回true U+DBFF;否则返回false

例外情况:

  • ArgumentNullException:如果s为null。
  • ArgumentOutOfRangeException:如果索引不是s位置。

下面的程序说明了Char.IsHighSurrogate(String,Int32)方法的用法

范例1:

// C# program to demonstrate the 
// Char.IsHighSurrogate(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 IsHighSurrogate() Method
        bool val = Char.IsHighSurrogate(s, i);
  
        // checking
        if (val)
  
            Console.WriteLine("String '{0}' contains High "
                  + "Surrogate value at index {1} ", s, i);
        else
          Console.WriteLine("String '{0}' does't contain any High"
                          + "Surrogate value at index {1}", s, i);
                                
    }
}
输出:
String '1234' does't contain any HighSurrogate value at index 3
String 'Tsunami' does't contain any HighSurrogate value at index 3
String 'psyc0lo' does't contain any HighSurrogate value at index 4
String 'að??z' contains High Surrogate value at index 1

示例2:对于ArgumentNullException

// C# program to demonstrate the 
// Char.IsHighSurrogate(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);
            Console.WriteLine("");
            Console.WriteLine("s is null");
            check(null, 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 IsHighSurrogate() Method
        bool val = Char.IsHighSurrogate(s, i);
  
        // checking
        if (val)
            Console.WriteLine("String '{0}' contains High "
                   + "Surrogate value at index {1} ",s, i);
                                
        else
            Console.WriteLine("String '{0}' does't contain any High"
                             + "Surrogate value at index {1}",s, i);
                                
    }
}
输出:
String '1234' does't contain any HighSurrogate value at index 3
String 'Tsunami' does't contain any HighSurrogate value at index 3
String 'psyc0lo' does't contain any HighSurrogate value at index 4

s is null
Exception Thrown: System.ArgumentNullException

示例3:对于ArgumentOutOfRangeException

// C# program to demonstrate the 
// Char.IsHighSurrogate(String, 
// Int32) Method
using System;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        try {
  
            // calling check() Method
            check("1234", 3);
            check("Tsunami", 3);
  
            // 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("fjsjsj", -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 IsHighSurrogate() Method
        bool val = Char.IsHighSurrogate(s, i);
  
        // checking
        if (val)
            Console.WriteLine("String '{0}' contains High "
                  + "Surrogate value at index {1} ", s, i);
                               
        else
            Console.WriteLine("String '{0}' does't contain any High"
                            + "Surrogate value at index {1}", s, i);
                               
    }
}
输出:
String '1234' does't contain any HighSurrogate value at index 3
String 'Tsunami' does't contain any HighSurrogate value at index 3
String 'að??z' contains High Surrogate value at index 1 

index is less than zero
Exception Thrown: System.ArgumentOutOfRangeException

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.char.ishighsurrogate?view=netframework-4.7.2#System_Char_IsHighSurrogate_System_String_System_Int32_