Java StringBuffer codePointCount() 方法



Java 的StringBuffer codePointCount() 方法计算此序列指定文本范围内的 Unicode 代码点的数量。文本范围从指定的起始索引开始,扩展到倒数第二个索引处的字符。因此,文本范围的长度(以字符为单位)为结束索引 - 开始索引。

如果在给定文本范围内不存在 Unicode 代码点,则该方法不会抛出任何错误,只会打印“0”。

注意 - 未配对的代理代码点分别被视为一个单独的代码点。

语法

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

public int codePointCount(int beginIndex, int endIndex)

参数

  • beginIndex - 这是文本范围第一个字符的索引。
  • endIndex - 这是文本范围最后一个字符之后的索引。

返回值

此方法返回指定文本范围内的 Unicode 代码点的数量。

示例:获取文本范围的长度

当我们将输入文本视为字母时,该方法会返回作为参数给出的文本范围的长度。

以下示例演示了 Java StringBuffer codePointCount() 方法的使用。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("TUTORIALS");
      System.out.println("buffer = " + buff);

      // returns the codepoint count from index 1 to 5
      int retval = buff.codePointCount(1, 5);
      System.out.println("Count = " + retval);
    
      buff = new StringBuffer("7489042 ");
      System.out.println("buffer = " + buff);
      
      // returns the codepoint count from index 3 to 9
      retval = buff.codePointCount(3, 9);
      System.out.println("Count = " + retval);

      buff = new StringBuffer("@#$%^&");
      System.out.println("buffer = " + buff);
      
      // returns the codepoint count from index 2 to 4
      retval = buff.codePointCount(2, 4);
      System.out.println("Count = " + retval);
   }
}

输出

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

buffer = TUTORIALS
Count = 4
buffer = 7489042
Count = 6
buffer = @#$%^&
Count = 2

示例:获取没有有效代码点的文本范围的长度

当我们将输入文本视为没有有效代码点的字符时,该方法会返回零。

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("/u1298139");
      System.out.println("buffer = " + buff);

      // returns the codepoint count
      int retval = buff.codePointCount(0, 0);
      System.out.println("Count = " + retval);
   }
}

输出

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

buffer = /u1298139
Count = 0

示例:在检查代码点数时遇到异常

但是,如果给定的索引参数超过或早于文本范围,则该方法会抛出 IndexOutOfBounds 异常。

public class StringBufferDemo {

   public static void main(String[] args) {

      StringBuffer buff = new StringBuffer("djk137");
      System.out.println("buffer = " + buff);
      
      // returns the codepoint count from index 2 to 4
      int retval = buff.codePointCount(-1, 9);
      System.out.println("Count = " + retval);

   }
}

异常

如果我们编译并运行程序,则会抛出 IndexOutOfBounds 异常,而不是打印输出:

buffer = djk137
Exception in thread "main" java.lang.IndexOutOfBoundsException
at java.lang.AbstractStringBuilder.codePointCount(AbstractStringBuilder.java:320)
	at java.lang.StringBuffer.codePointCount(StringBuffer.java:227)at StringBufferDemo.main(StringBufferDemo.java:11)
java_lang_stringbuffer.htm
广告