Java - Character isSurrogatePair() 方法



描述

Java 的 Character isSurrogatePair() 方法用于判断一对 char 值是否为有效的 Unicode 代理对。

让我们首先了解什么是代理对以及它们在各种场景中的作用:

“代理”是 UTF-16 值,用于表示单个补充字符。补充字符是 Unicode 值,在 Unicode 系统中没有有效的表示;因此,使用一对这样的代理字符(称为代理对)来表示这些值。

对中的第一个值称为高(或前导)代理值,其下一个值称为低(或尾随)代理值。16 位高代理码点值范围在 U+D800 到 U+DBFF 之间,而 16 位低代理码点值范围在 U+DC00 到 U+DFFF 之间。

语法

以下是 Java Character isSurrogatePair() 方法的语法:

public static boolean isSurrogatePair(char high, char low)

参数

  • high − 要测试的高代理码值

  • low − 要测试的低代理码值

返回值

如果指定的高代理和低代理码值表示有效的代理对,则此方法返回 true;否则返回 false。

检查字符对是否为代码单元的代理对示例

以下示例演示了 Java Character isSurrogatePair() 方法的用法。在这个例子中,我们创建了两个 char 变量并为其分配了两个 Unicode 值。然后使用 isSurrogatePair() 方法检查字符对,并打印结果。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {

      // create 2 char primitives ch1, ch2
      char ch1, ch2;

      // assign values to ch1, ch2
      ch1 = '\ud800';
      ch2 = '\udc00';

      // create a boolean primitive b
      boolean b;

      // check if ch1, ch2 is a surrogate pair and assign result to b
      b = Character.isSurrogatePair(ch1, ch2);
      String str = "ch1, ch2 is a valid Unicode surrogate pair is " + b;

      // print b value
      System.out.println( str );
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

ch1, ch2 is a valid Unicode surrogate pair is true

检查字符对是否为代码单元的代理对示例

以下示例演示了 Java Character isSurrogatePair() 方法的用法。在这个例子中,我们创建了两个 char 变量并为其分配了两个 Unicode 值。然后使用 isSurrogatePair() 方法检查字符对,并打印结果。

package com.tutorialspoint;

public class SurrogatePairDemo {
   public static void main(String[] args) {
	   char c1 = '\ud800';
	   char c2 = '\u4563';
	   boolean b = Character.isSurrogatePair(c1, c2);
	   System.out.println(c1 + " and " + c2 + " are a surrogate pair is " + b);
   }
}

输出

编译并执行程序后的输出将显示如下:

? and ? are a surrogate pair is false

检查字符对是否为代码单元的代理对示例

我们还可以使用条件语句将方法的布尔返回值作为条件传递给它。让我们看一个执行相同操作的示例。

package com.tutorialspoint;

public class SurrogatePairDemo {
   public static void main(String[] args) {
	   char c1 = '\ud801';
	   char c2 = '\udc3f';
	   boolean b = Character.isSurrogatePair(c1, c2);
	   if(b)
	      System.out.println("The characters are a surrogate pair");
	   else
	      System.out.println("The characters are not a surrogate pair");
   }
}

输出

给定程序的输出将显示如下:

The characters are a surrogate pair

检查字符对是否为代码单元的代理对示例

在另一个示例中,我们声明并初始化两个字符数组,并使用循环语句来检查这两个数组中对应的元素是否为代理对。

package com.tutorialspoint;

public class SurrogatePairDemo {    
   public static void main(String []args){
      char cp1[] = new char[] {'\ud810', '\ud967', '\ud832', '\u7843'};
      char cp2[] = new char[] {'\u5637', '\udc10', '\udfff', '\udd56'};
      for(int i = 0; i < cp1.length; i++) {
         if(Character.isSurrogatePair(cp1[i], cp2[i]))
            System.out.println("The character is a surrogate pair");
         else
            System.out.println("The character is not a surrogate pair");
      }
   }
}

输出

让我们在打印以下输出之前编译并运行上面给出的程序:

The character is not a surrogate pair
The character is a surrogate pair
The character is a surrogate pair
The character is not a surrogate pair
java_lang_character.htm
广告