Java - Character codePointCount() 方法



描述

Java 的 Character codePointCount() 方法用于计算特定字符序列文本范围内的 Unicode 代码点数。

文本范围从某个起始索引开始,扩展到结束索引之前的字符。因此,文本范围的长度(以字符为单位)是结束索引 - 起始索引。

注意 - 文本范围内的未配对代理字符每个计为一个代码点。

语法

以下是 Java Character codePointCount() 方法的语法

public static int codePointCount(CharSequence seq, int beginIndex, int endIndex)
or,
public static int codePointCount(char[] a, int offset, int count)

参数

  • seq - 字符序列

  • beginIndex - 文本范围第一个字符的索引

  • endIndex - 文本范围最后一个字符之后的索引

  • a - 字符数组

  • offset - 字符数组第一个字符的索引

  • count - 子数组的长度(以字符为单位)

返回值

此方法返回指定文本范围或子数组中的 Unicode 代码点数。

使用给定索引在 CharSequence 中获取代码点数示例

以下示例显示了 Java Character codePointCount(CharSequence seq, int beginIndex, int endIndex) 方法的使用。当我们将 CharSequence 和索引值作为参数传递给 codePointCount(CharSequence seq, int beginIndex, int endIndex) 方法时,返回值是在给定 CharSequence 中给定范围内存在的 Unicode 字符的数量。

package com.tutorialspoint;

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

      // create a CharSequence seq and assign value
      CharSequence seq = "Hello World!";

      // create and assign value to bi, ei
      int bi = 4, ei = 8;

      // create an int res
      int count;

      // assign result of codePointCount on seq to res using bi, ei
      count = Character.codePointCount(seq, bi, ei);
      String str = "No. of Unicode code points is " + count;

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

输出

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

No. of Unicode code points is 4

使用给定索引在字母 CharSequence 中获取代码点数示例

除了字母字符序列之外,让我们将数字字符序列作为参数传递给此方法。返回值将是文本范围内存在的数字的数量。

public class CharacterDemo {
   public static void main(String args[]) {
      CharSequence ch = "0123456789";
      int result = Character.codePointCount(ch, 3, 7);
      System.out.println("The unicode code point count in given character sequence is " + result);
   }
}

输出

我们必须编译并运行上述给定程序以获得如下输出:

The unicode code point count in given character sequence is 4

使用给定索引在 CharSequence 中获取代码点数示例

以下示例显示了 Java Character codePointCount(char[] a, int offset, int count) 方法的使用。当我们将 char[] 和索引值作为参数传递给 codePointCount(char[] a, int offset, int count) 方法时,返回值是在给定 char[] 中给定范围内存在的 Unicode 字符的数量。

package com.tutorialspoint;

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

      // create a char a[] and assign value
      char a[] = {'t', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's'};

      // create and assign value to offset, count
      int offset = 2, count = 5;

      // create an int res
      int res;

      // assign result of codePointCount on a[] to res using offset, count
      res = Character.codePointCount(a, offset, count);

      // print count value
      System.out.println("No. of Unicode code points is " + res);
   }
}

输出

如果我们编译并运行上述程序,则将显示以下结果:

No. of Unicode code points is 5

在 CharSequence 中使用无效索引获取代码点数时遇到异常示例

但是,当结束索引大于字符序列参数的长度时,此方法会抛出 IndexOutOfBounds 异常。

package com.tutorialspoint;

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

      // assign value to seq
      CharSequence seq = "Hello World!";

      // create and assign value to bi, ei such that the program throws an exception
      int bi = 4, ei = 18;

      // create an int res
      int res;

      // call the codePointCount method
      result = Character.codePointCount(seq, bi, ei);

      // print res value
      System.out.println("No. of Unicode code points is " + res);
   }
}

异常

在编译并运行上述程序时,将抛出以下异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException
	at java.lang.Character.codePointCount(Character.java:5225)
	at com.tutorialspoint.CharacterDemo.main(CharacterDemo.java:19)

在给定索引处使用 null CharSequence 获取代码点数时遇到异常示例

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

package com.tutorialspoint;

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

      // create a CharSequence seq and assign value
      CharSequence seq = null;

      // create and assign value to bi, ei
      int bi = 4, ei = 8;

      // create an int res
      int res;

      // assign result of codePointCount on seq to res using bi, ei
      res = Character.codePointCount(seq, bi, ei);

      String str = "No. of Unicode code points is " + res;

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

异常

程序抛出 NullPointer 异常,而不是显示如下输出:

Exception in thread "main" java.lang.NullPointerException
at java.lang.Character.codePointCount(Character.java:5223)
at com.tutorialspoint.CharacterDemo.main(CharacterDemo.java:19)
java_lang_character.htm
广告