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
广告