原文: https://howtodoinjava.com/java/string/java-string-split-example/

Java String.split()在将字符串拆分为方法参数正则表达式的匹配项之后,返回字符串数组。

1. String.split()方法

通过使用分隔符子字符串或正则表达式进行分割,可以使用String.split()将字符串拆分为字符串数组

1.1 方法语法

String.split()方法已重载,有两种变体。

  1. /**
  2. * @param regex - the delimiting regular expression
  3. * @param limit - the result threshold
  4. *
  5. * @return - the array of strings
  6. */
  7. public String[] split(String regex);
  8. public String[] split(String regex, int limit);

1.2 抛出PatternSyntaxException

请注意,如果正则表达式的语法无效,则split()会引发PatternSyntaxException。 在给定的示例中,"["是无效的正则表达式。

  1. public class StringExample
  2. {
  3. public static void main(String[] args)
  4. {
  5. String[] strArray = "hello world".split("[");
  6. }
  7. }

程序输出。

  1. Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
  2. [
  3. ^
  4. at java.util.regex.Pattern.error(Pattern.java:1955)
  5. at java.util.regex.Pattern.clazz(Pattern.java:2548)
  6. at java.util.regex.Pattern.sequence(Pattern.java:2063)
  7. at java.util.regex.Pattern.expr(Pattern.java:1996)
  8. at java.util.regex.Pattern.compile(Pattern.java:1696)
  9. at java.util.regex.Pattern.<init>(Pattern.java:1351)
  10. at java.util.regex.Pattern.compile(Pattern.java:1028)
  11. at java.lang.String.split(String.java:2367)
  12. at java.lang.String.split(String.java:2409)
  13. at com.StringExample.main(StringExample.java:9)

1.3 null不是有效的方法参数

方法不接受null参数。 如果方法参数为null,它将抛出NullPointerException

  1. Exception in thread "main" java.lang.NullPointerException
  2. at java.lang.String.split(String.java:2324)
  3. at com.StringExample.main(StringExample.java:11)

2. Java String.split(String regex)示例

2.1 Java 用字或分隔符分割字符串

Java 程序根据某些标记拆分字符串。 在给定的示例中,我为分隔符连字符"-"拆分字符串。

  1. public class StringExample
  2. {
  3. public static void main(String[] args)
  4. {
  5. String str = "how to do-in-java-provides-java-tutorials";
  6. String[] strArray = str.split("-");
  7. System.out.println(Arrays.toString(strArray));
  8. }
  9. }

程序输出:

  1. [how to do, in, java, provides, java, tutorials]

与之相似:

2.2 Java 按空格分割字符串

Java 程序按空格分割字符串。

  1. public class StringExample
  2. {
  3. public static void main(String[] args)
  4. {
  5. String str = "how to do in java provides java tutorials";
  6. String[] strArray = str.split("\\s");
  7. System.out.println(Arrays.toString(strArray));
  8. }
  9. }

程序输出:

  1. [how, to, do, in, java, provides, java, tutorials]

2.2 Java 用多个分隔符分割字符串

Java 程序用多个分隔符分割字符串。 在多个分隔符之间使用正则表达式或运算符'|')符号。

  1. public class StringExample
  2. {
  3. public static void main(String[] args)
  4. {
  5. String str = "how-to-do-in-java. provides-java-tutorials.";
  6. String[] strArray = str.split("-|\\.");
  7. System.out.println(Arrays.toString(strArray));
  8. }
  9. }

程序输出:

  1. [how, to, do, in, java, provides, java, tutorials]

3. Java String.split(String regex, int limit)示例

此版本的方法也拆分字符串,但是标记的最大数量不能超过limit参数。

Java 程序以空格分割字符串,例如最大标记数不能超过'5'

  1. public class StringExample
  2. {
  3. public static void main(String[] args)
  4. {
  5. String str = "how to do in java provides java tutorials";
  6. String[] strArray = str.split("\\s", 5);
  7. System.out.println(strArray.length); //5
  8. System.out.println(Arrays.toString(strArray));
  9. }
  10. }

程序输出:

  1. 5
  2. [how, to, do, in, java provides java tutorials]

在此示例中,我们学习了在 Java 中将字符串拆分为数组。 我们看到了示例如何使用分隔符在 Java 中拆分字符串。

参考文献:

Java 字符串指南

String Java 文档