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
廣告