Java - String split() 方法



Java String split() 方法用於將字串分割成一個子字串陣列。此方法接受一個表示正則表示式的字串作為引數,在當前字串中搜索給定的模式,並在每個匹配處分割它。

以匹配給定正則表示式的子字串結尾的字串的每個子字串都包含在結果陣列中。如果表示式與給定字串的任何部分都不匹配,則結果陣列只有一個元素,即給定字串。

此方法的操作方式與使用給定表示式和零限制引數呼叫 split() 方法相同。因此,結果陣列不包含尾隨空字串。

此方法有兩個多型變體。語法如下所示。

語法

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

public String[] split(String regex) // first syntax
or,
public String[] split(String regex, int limit) // second syntax

引數

  • regex − 這是分隔符正則表示式。

  • limit − 控制模式應用的次數,從而影響結果陣列的長度 // 第二種語法

返回值

此方法返回透過圍繞給定正則表示式的匹配項分割給定字串計算出的字串陣列。

基於分隔符模式分割字串示例

以下示例演示了 Java String split() 方法的使用,透過分割 String 物件並透過向字串提供限制 '3' 來計算標記:

package com.tutorialspoint;

public class StringDemo { 
   public static void main(String[] args) {
      String str = "a d, m, i.n";
      String delimiters = "\\s+|,\\s*|\\.\\s*";
      
      // analyzing the string
      String[] tokensVal = str.split(delimiters); 
      
      // prints the count of tokens
      System.out.println("Count of tokens = " + tokensVal.length);    
      for(String token : tokensVal) {
         System.out.print(token);
      }     
      
      // analyzing the string with limit as 3
      tokensVal = str.split(delimiters, 3); 
      
      // prints the count of tokens 
      System.out.println("\nCount of tokens = " + tokensVal.length);    
      for(String token : tokensVal) {
         System.out.print(token);
      }    
   }
}

輸出

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

Count of tokens = 5
admin
Count of tokens = 3
adm, i.n

基於分隔符模式分割字串示例

在以下示例中,split() 方法用於分割 String 物件並在不向字串提供任何限制的情況下計算標記:

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String str = "a d, m, i.n";
      String delimiters = "\\s+|,\\s*|\\.\\s*";
      
      // analyzing the string 
      String[] tokensVal = str.split(delimiters); 
      
      // prints the number of tokens
      System.out.println("Count of tokens = " + tokensVal.length);    
      for(String token : tokensVal) {
         System.out.print(token);
      } 
   }
}

輸出

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

Count of tokens = 5
admin

基於分隔符字串分割字串示例

在此示例中,我們使用值“WelcomeLaughtoLaughtutorialsPoint”建立一個 Java String 物件,並且我們嘗試在每次遇到子字串“laugh”時分割此字串。

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String s = "WelcomeLaughtoLaughtutorialsPoint";
      String[] splitting = s.split("Laugh");
      for (String splt : splitting) {
         System.out.println(splt);
      }
   }
}

輸出

在執行上述程式時,輸出如下所示:

Welcome
to
tutorialsPoint

基於分隔符模式分割字串示例

在這種情況下,我們使用一個單詞初始化 Java String,並嘗試使用字串中的字元進行分割。

package com.tutorialspoint;

public class StringDemo {
   public static void main(String[] args) {
      String s = "Welcome";
      String[] splitting = s.split("l");
      
      // splitting the string on 'l' using the regex
      for (int i = 0; i < splitting.length; i++) {
         System.out.println(splitting[i]);
      }
   }
}

輸出

上述程式的輸出如下:

We
come

檢查基於無效模式分割字串時的異常示例

如果語法無效,則分隔符正則表示式將丟擲 PatternSyntaxException。請檢視下面的示例:

public class StringDemo {
   public static void main(String[] args) {
      String s = "Welcome to tutorials***Point";
      String[] splitting = s.split("***");
      
      // splitting the string on 'l' using the regex
      for (String text : splitting) {
         System.out.println(text);
      }
   }
}

PatternSyntaxException

在執行上述程式碼時,我們得到以下輸出:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
***
^
      at java.base/java.util.regex.Pattern.error(Pattern.java:2038)
      at java.base/java.util.regex.Pattern.sequence(Pattern.java:2213)
      at java.base/java.util.regex.Pattern.expr(Pattern.java:2079)
      at java.base/java.util.regex.Pattern.compile(Pattern.java:1793)
      at java.base/java.util.regex.Pattern.(Pattern.java:1440)
      at java.base/java.util.regex.Pattern.compile(Pattern.java:1079)
      at java.base/java.lang.String.split(String.java:3149)
      at java.base/java.lang.String.split(String.java:3195)
      at StringDemo.main(StringDemo.java:4)
java_lang_string.htm
廣告