Java StringBuffer substring() 方法



Java StringBuffer substring() 方法用于从 StringBuffer 对象中检索所需的子序列。子字符串是给定字符串的一小部分。默认情况下,此子字符串从指定的索引开始,并延伸到此序列的末尾。

substring() 方法接受一个整数参数,该参数保存起始索引的值。如果起始索引值为负或大于序列长度,则会抛出异常。

substring() 方法有两个多态变体,它们具有不同的参数,如下面的语法所示。

语法

以下是Java StringBuffer substring() 方法的语法:

public String substring(int start) 
public String substring(int start, int end)

参数

  • start − 这是起始索引(包含)。
  • end − 这是结束索引(不包含)。

返回值

此方法返回从起始索引到序列末尾的新字符串。

如果将end值作为参数传递,则此方法返回从起始索引到结束索引的新字符串。

示例:从 StringBuffer 字符串中获取子字符串

如果给定的起始索引值为正数小于给定序列长度,则 substring() 方法将返回一个新的子字符串。

在下面的程序中,我们使用“Java Language”的值实例化StringBuffer 类。然后,使用substring() 方法,我们尝试从给定序列的指定起始索引 6处检索新的子字符串

public class SubString {
   public static void main(String[] args) {
      //instantiate of the StringBuffer class
      StringBuffer sb = new StringBuffer("Java Language");
      System.out.println("The given string: " + sb);
      //initialize the start index value
      int startIndex = 5;
      System.out.println("The given start index value is: " + startIndex);
      //using the substring() method
      System.out.println("The new sub-string is: " + sb.substring(startIndex));
   }
}

输出

执行上述程序后,将产生以下结果:

The given string: Java Language
The given start index value is: 5
The new sub-string is: Language

示例:在从 StringBuffer 字符串中获取子字符串时遇到 StringIndexOutOfBoundsException

如果给定的起始索引值大于序列长度,则 substring() 方法将抛出StringIndexOutOfBoundsException

在下面的示例中,我们使用“Tutorix”的值创建一个StringBuffer 类的对象。使用substring() 方法,我们尝试从给定序列的指定起始索引 10处检索子字符串,其值大于序列长度。

public class SubString {
   public static void main(String[] args) {
      try {
         //create an object of this class
         StringBuffer sb = new StringBuffer("Tutorix");
         System.out.println("The given string: " + sb);
         //initialize the start index value
         int startIndex = 10;
         System.out.println("The given start index value is: " + startIndex);
         //using the substring() method
         System.out.println("The new sub-string is: " + sb.substring(startIndex));
      } catch(Exception e) {
         e.printStackTrace();
         System.out.println("Exception: " + e);
      }
   }
}

输出

以下是上述程序的输出:

The given string: Tutorix
The given start index value is: 10
java.lang.StringIndexOutOfBoundsException: Range [10, 7) out of bounds for length 7
   at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
   at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
   at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
   at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
   at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
   at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112)
   at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349)
   at java.base/java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:1057)
   at java.base/java.lang.StringBuffer.substring(StringBuffer.java:525)
   at java.base/java.lang.StringBuffer.substring(StringBuffer.java:507)
   at SubString.main(SubString.java:13)
Exception: java.lang.StringIndexOutOfBoundsException: Range [10, 7) out of bounds for length 7

示例:在从 StringBuffer 字符串中获取子字符串时遇到 StringIndexOutOfBoundsException

如果给定的起始索引值为负数,则此方法将抛出StringIndexOutOfBoundsException

在此程序中,我们使用“JavaProgramming”的值实例化StringBuffer 类。然后,使用substring() 方法,我们尝试从给定序列的指定起始索引 -1处检索子字符串。

public class SubString {
   public static void main(String[] args) {
      try {
         //instantiate of the StringBuffer class
         StringBuffer sb = new StringBuffer("JavaProgramming");
         System.out.println("The given string: " + sb);
         //initialize the start index value
         int startIndex = -1;
         System.out.println("The given start index value is: " + startIndex);
         //using the substring() method
         System.out.println("The new sub-string is: " + sb.substring(startIndex));
      } catch(StringIndexOutOfBoundsException e) {
         e.printStackTrace();
         System.out.println("Exception: " + e);
      }
   }
}

输出

上述程序产生以下结果:

The given string: JavaProgramming
The given start index value is: -1
java.lang.StringIndexOutOfBoundsException: Range [-1, 15) out of bounds for length 15
   at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
   at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
   at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
   at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
   at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
   at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112)
   at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349)
   at java.base/java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:1057)
   at java.base/java.lang.StringBuffer.substring(StringBuffer.java:525)
   at java.base/java.lang.StringBuffer.substring(StringBuffer.java:507)
   at SubString.main(SubString.java:13)
Exception: java.lang.StringIndexOutOfBoundsException: Range [-1, 15) out of bounds for length 15

示例:从 StringBuffer 字符串中获取子字符串

如果给定的起始索引和结束索引值为正数小于序列长度,则 substring() 方法将返回新的子字符串。

在此程序中,我们使用“Java Programming Language”的值创建一个StringBuffer 类的对象。然后,使用substring() 方法,我们尝试从给定序列的指定起始索引 5结束索引 16处检索子字符串。

public class SubString {
   public static void main(String[] args) {
      //instantiate of the StringBuffer class
      StringBuffer sb = new StringBuffer("Java Programming Language");
      System.out.println("The given string: " + sb);
      //initialize the start index and end index values
      int startIndex = 5;
      int endIndex = 16;
      System.out.println("The given start index and end index values are: " + startIndex + " and " + endIndex);
      //using the substring() method
      System.out.println("The new sub-string is: " + sb.substring(startIndex, endIndex));
   }
}

输出

执行上述程序后,将生成以下输出:

The given string: Java Programming Language
The given start index and end index values are: 5 and 16
The new sub-string is: Programming
java_lang_stringbuffer.htm
广告