Java - Character codePointBefore() 方法



描述

Java 的Character codePointBefore() 方法将检索字符数组中某个字符索引之前字符的码点。这些码点可以表示普通字符和补充字符。

当字符数组中给定索引之前的数值满足以下条件时,将获得补充码点字符:

  • 如果 (index-2) 位置的 char 值属于高代理范围 (U+D800 到 U+DBFF) 且非负。

  • 如果前一个索引处的数值属于低代理范围 (U+DC00 到 U+DFFF)。

在任何其他情况下,将获得普通码点字符。

注意 - 此方法以多种多态形式出现,具有不同的参数。

语法

以下是使用不同和扩展参数的 Java Character codePointBefore() 方法的各种语法。

public static int codePointBefore(char[] a, int index)
(or)
public static int codePointBefore(CharSequence seq, int index)
(or)
public static int codePointBefore(char[] a, int index, int start)

参数

  • a - char 数组

  • index - 应该返回的码点之后的索引

  • start - char 数组中第一个数组元素的索引。

  • seq - CharSequence 实例

返回值

此方法返回给定索引之前的 Unicode 码点值。

在给定索引的 char 数组中获取前导字符的码点示例

以下示例演示了 Java Character codePointBefore() 方法的用法。当我们采用简单的字符数组和指定的小于数组长度的索引作为方法的参数时,返回值将是该索引处前导字符的码点。

package com.tutorialspoint;

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

      // create a char array c and assign values
      char[] c = new char[] { 'a', 'b', 'c', 'd', 'e' };

      // create and assign value to index
      int index  = 2;

      // create an int res
      int res;

      // assign result of codePointBefore on array c at index to res
      res = Character.codePointBefore(c, index);

      String str = "Unicode code point is " + res;

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

输出

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

Unicode code point is 98

在给定索引的 CharSequence 中获取前导字符的码点示例

当我们将 CharSequence 和索引值作为参数传递给 codePointBefore(CharSequence seq, int index) 方法时,返回值是给定 CharSequence 中索引处的前导字符。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {
      CharSequence seq = "Hello";
      int index  = 4;
      int res;

      // assign result of codePointBefore on seq at index to res
      res = Character.codePointBefore(seq, index);
      String str = "Unicode code point is " + res;
      System.out.println( str );
   }
}

输出

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

Unicode code point is 108

示例

以下示例演示了 Java Character codePointBefore(char[] a, int index, int start) 方法的用法。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {
      char[] c = new char[] { 'A', 'b', 'C', 'd'};
      int index  = 3, start = 1;
      int res;
      
      // assign result of codePointBefore on c array at index to res using start
      res = Character.codePointBefore(c, index, start);
      String str = "Unicode code point is " + res;
      System.out.println( str );
   }
}

输出

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

Unicode code point is 67

在 char 数组中使用无效索引获取前导字符的码点时遇到异常的示例

如果将无效索引作为参数传递给方法,则会引发 ArrayIndexOutOfBoundsException 异常。

package com.tutorialspoint;

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

      // create a char array c and assign values
      char[] c = new char[] { 'a', 'b', 'c', 'd', 'e' };

      // create and assign a negative value to index to throw an ArrayIndexOutOfBoundsException exception
      int index  = -1;

      // create an int res
      int res;

      // assign result of codePointBefore on array c at index to res
      res = Character.codePointBefore(c, index);
      String str = "Unicode code point is " + res;

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

异常

在编译和执行上述程序时,该方法会抛出如下异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2
at java.lang.Character.codePointBeforeImpl(Character.java:5055)
	at java.lang.Character.codePointBefore(Character.java:5016)
at com.tutorialspoint.CharacterDemo.main(CharacterDemo.java:19)

在给定索引的 null CharSequence 中获取前导字符的码点时遇到异常的示例

但是,如果将 CharSequence 初始化为 null 值并将其作为参数传递给方法,则会引发 NullPointerException 异常。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {
      CharSequence seq = null;
      int index  = 9;
      int output = Character.codePointBefore(seq, index);
      System.out.println(output);
   }
}

异常

在编译和执行上述程序时,该方法会抛出如下异常:

Exception in thread "main" java.lang.NullPointerException
at java.lang.Character.codePointBefore(Character.java:4984)at com.tutorialspoint.CharacterDemo.main(CharacterDemo.java:10)
java_lang_character.htm
广告
© . All rights reserved.