ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Java `String.split()`方法示例 > 原文: [https://howtodoinjava.com/java/string/java-string-split-example/](https://howtodoinjava.com/java/string/java-string-split-example/) Java `String.split()`在将字符串拆分为方法参数正则表达式的匹配项之后,返回字符串数组。 ## 1\. `String.split()`方法 通过使用*分隔符*子字符串或正则表达式进行分割,可以使用`String.split()`将字符串拆分为**字符串数组**。 #### 1.1 方法语法 `String.split()`方法已重载,有两种变体。 ```java /** * @param regex - the delimiting regular expression * @param limit - the result threshold * * @return - the array of strings */ public String[] split(String regex); public String[] split(String regex, int limit); ``` #### 1.2 抛出`PatternSyntaxException` 请注意,如果正则表达式的语法无效,则`split()`会引发`PatternSyntaxException`。 在给定的示例中,`"["`是无效的正则表达式。 ```java public class StringExample { public static void main(String[] args) { String[] strArray = "hello world".split("["); } } ``` 程序输出。 ```java Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ ^ at java.util.regex.Pattern.error(Pattern.java:1955) at java.util.regex.Pattern.clazz(Pattern.java:2548) at java.util.regex.Pattern.sequence(Pattern.java:2063) at java.util.regex.Pattern.expr(Pattern.java:1996) at java.util.regex.Pattern.compile(Pattern.java:1696) at java.util.regex.Pattern.<init>(Pattern.java:1351) at java.util.regex.Pattern.compile(Pattern.java:1028) at java.lang.String.split(String.java:2367) at java.lang.String.split(String.java:2409) at com.StringExample.main(StringExample.java:9) ``` #### 1.3 `null`不是有效的方法参数 方法不接受`null`参数。 如果方法参数为`null`,它将抛出`NullPointerException`。 ```java Exception in thread "main" java.lang.NullPointerException at java.lang.String.split(String.java:2324) at com.StringExample.main(StringExample.java:11) ``` ## 2\. Java `String.split(String regex)`示例 #### 2.1 Java 用字或分隔符分割字符串 Java 程序根据某些标记拆分字符串。 在给定的示例中,我为分隔符连字符`"-"`拆分字符串。 ```java public class StringExample { public static void main(String[] args) { String str = "how to do-in-java-provides-java-tutorials"; String[] strArray = str.split("-"); System.out.println(Arrays.toString(strArray)); } } ``` 程序输出: ```java [how to do, in, java, provides, java, tutorials] ``` 与之相似: #### 2.2 Java 按空格分割字符串 Java 程序按空格分割字符串。 ```java public class StringExample { public static void main(String[] args) { String str = "how to do in java provides java tutorials"; String[] strArray = str.split("\\s"); System.out.println(Arrays.toString(strArray)); } } ``` 程序输出: ```java [how, to, do, in, java, provides, java, tutorials] ``` #### 2.2 Java 用多个分隔符分割字符串 Java 程序**用多个分隔符**分割字符串。 在多个分隔符之间使用**正则表达式或运算符**(`'|'`)符号。 ```java public class StringExample { public static void main(String[] args) { String str = "how-to-do-in-java. provides-java-tutorials."; String[] strArray = str.split("-|\\."); System.out.println(Arrays.toString(strArray)); } } ``` 程序输出: ```java [how, to, do, in, java, provides, java, tutorials] ``` ## 3\. Java `String.split(String regex, int limit)`示例 此版本的方法也拆分字符串,但是标记的最大数量不能超过`limit`参数。 Java 程序**以空格**分割字符串,例如**最大标记数**不能超过`'5'`。 ```java public class StringExample { public static void main(String[] args) { String str = "how to do in java provides java tutorials"; String[] strArray = str.split("\\s", 5); System.out.println(strArray.length); //5 System.out.println(Arrays.toString(strArray)); } } ``` 程序输出: ```java 5 [how, to, do, in, java provides java tutorials] ``` 在此示例中,我们学习了**在 Java** 中将字符串拆分为数组。 我们看到了示例如何使用分隔符在 Java 中拆分字符串。 参考文献: [Java 字符串指南](https://howtodoinjava.com/java-string/) [`String` Java 文档](https://docs.oracle.com/javase/9/docs/api/java/lang/String.html)