Java - String subsequence() 方法



Java String subSequence() 方法用於檢索給定序列的子序列的新字元序列。

此方法的行為類似於 substring() 方法。唯一的區別在於它返回 CharSequence 而不是 String。在內部,subSequence() 方法呼叫 substring() 方法。返回的 CharSequence 可以顯式轉換為 String 物件。

子序列從提供的索引處開始,字元值為 start,並以索引 (end-1) 處的字元值為結束。返回的序列的長度(以字元為單位)為 end-start;如果 start 等於 end,則返回空序列。

語法

以下是Java String subSequence()方法的語法:

public CharSequence subSequence(int beginIndex, int endIndex)

引數

  • beginIndex - 這是起始索引的值,包含在內。

  • endIndex - 這是結束索引的值,不包含在內。

返回值

此方法返回指定的子序列。

使用給定索引從字串中獲取子序列示例

以下示例演示了 Java String subSequence() 方法的用法。在這裡,我們建立了一個值為“tutorialspoint”的字串,並嘗試檢索索引範圍“2-9”處的子字串:

package com.tutorialspoint;

public class StringDemo {       
   public static void main(String[] args) {
      String str = "Tutorials Point!";   
      System.out.println("string = " + str);   
      
      // returns the specified subsequence from index 2 to 9
      System.out.println("string subsequence = " + str.subSequence(2,9));
   }
}

輸出

如果編譯並執行上述程式,它將產生以下結果:

string = Tutorials Point!
string subsequence = torials

使用負索引從字串中獲取子序列示例

以下是 subSequence() 方法的一個示例,其中傳遞的索引為負數。由於此方法不接受負值,因此將丟擲異常:

public class StringDemo {
   public static void main(String args[]) {
      String s = "Python Programming Language";
      System.out.print("The returned string is: ");
      System.out.println(s.subSequence(-4, 2));
   }
}

異常

如果編譯並執行上述程式,則輸出將顯示如下:

The returned string is: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Range [-4, 2) out of bounds for length 27
      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.String.checkBoundsBeginEnd(String.java:4589)
      at java.base/java.lang.String.substring(String.java:2703)
      at java.base/java.lang.String.subSequence(String.java:2741)
      at StringDemo.main(StringDemo.java:8)

使用超出範圍的索引從字串中獲取子序列示例

在以下示例中,提供的索引超出範圍或大於給定字串的長度。這會導致異常:

public class StringDemo {
   public static void main(String args[]) {
      String s = "Python Programming Language";
      System.out.print("The returned string is: ");
      System.out.println(s.subSequence(15, 60));
   }
}

異常

執行上述程式後,獲得的輸出如下:

The returned string is: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Range [15, 60) out of bounds for length 27
      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.String.checkBoundsBeginEnd(String.java:4589)
      at java.base/java.lang.String.substring(String.java:2703)
      at java.base/java.lang.String.subSequence(String.java:2741)
      at StringDemo.main(StringDemo.java:7)

從包含元字元的字串中獲取子序列示例

在以下示例中,我們正在建立一個包含元字元的字串。然後,我們嘗試檢索範圍“5-15”內的子字串:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String args[]) {
      String s = "$&!@$%&**&%$#@!#$(*%$#";
      System.out.print("The returned string is: ");
      System.out.println(s.subSequence(5, 15));
   }
}

輸出

上述程式的輸出如下:

The returned string is: %&**&%$#@!
java_lang_string.htm
廣告