原文:http://zetcode.com/java/splitstring
Java 拆分字符串教程展示了如何在 Java 中拆分字符串。 我们使用String的split(),Pattern的splitAsStream()和 Guava Splitter的on()方法。
String具有用于拆分字符串的内置方法:
String[]split(String regex)- 将字符串拆分为给定正则表达式的匹配项String[]split(String regex, int limit)- 在给定正则表达式的匹配项附近拆分此字符串
该方法返回一个拆分字符串数组。
除了split()方法外,Pattern也具有splitAsStream()方法。
分割电话号码
在第一个示例中,我们拆分了一个电话号码。
StringSplitEx.java
package com.zetcode;import java.util.Arrays;public class StringSplitEx {public static void main(String[] args) {var phoneNumber = "202-555-0154";String[] output = phoneNumber.split("-");Arrays.stream(output).forEach(part -> System.out.println(part));}}
电话号码通常用破折号(-)分隔。 程序使用split()将数字拆分为数值。
var phoneNumber = "202-555-0154";
这是电话号码。
String[] output = phoneNumber.split("-");
我们用破折号将字符串分开; split()方法返回从主字符串分割的子字符串数组。
Arrays.stream(output).forEach(part -> System.out.println(part));
我们向控制台显示拆分的部分。
2025550154
这是输出。
用点字符分割字符串
点字符在正则表达式语法中具有特殊含义。 要用点分隔字符串,我们需要对其进行转义或使用Pattern.quote()。
StringSplitDotEx
package com.zetcode;import java.util.Arrays;import java.util.regex.Pattern;public class StringSplitDotEx {public static void main(String[] args) {var address = "127.0.0.1";// String[] output = address.split("\\.");String[] output = address.split(Pattern.quote("."));Arrays.stream(output).forEach(part -> System.out.println(part));}}
该程序将拆分 IP 地址。
限制分割字符串
limit选项控制拆分子字符串的数量。
SplitStringLimitEx.java
package com.zetcode;import java.util.Arrays;public class SplitStringLimitEx {public static void main(String[] args) {var names = "Jane-Paul-Ferenc-David-Robert-Julia";var output = names.split("-", 4);Arrays.stream(output).forEach(System.out::println);}}
该程序将names字符串分为四个部分。
JanePaulFerencDavid-Robert-Julia
这是输出。
分割和修剪字符串
我们通常需要删除字符串周围的空格字符。
SplitStringTrimEx.java
package com.zetcode;import java.util.Arrays;public class SplitStringTrimEx {public static void main(String[] args) {var input = " wood, falcon\t, sky, forest\n";var output = input.trim().split("\\s*,\\s*");Arrays.stream(output).forEach(System.out::println);}}
要删除空白,我们使用trim()。
var output = input.trim().split("\\s*,\\s*");
正则表达式用逗号分隔输入字符串,逗号前后可能有任意多个空格。
用模式串分割字符串
我们可以使用流使用函数式的方式使用Pattern分割字符串。
PatternCompileEx.java
package com.zetcode;import java.util.regex.Pattern;import java.util.stream.Collectors;public class PatternCompileEx {public static void main(String[] args) {var phoneNumber = "202-555-0154";var output = Pattern.compile("-").splitAsStream(phoneNumber).collect(Collectors.toList());output.forEach(System.out::println);}}
该示例使用Pattern的splitAsStream()方法拆分电话号码。
var output = Pattern.compile("-").splitAsStream(phoneNumber).collect(Collectors.toList());
我们编译包含用于分割的字符的正则表达式。 在编译的表达式上,我们调用splitAsStream()以获取拆分子字符串流。 最后,我们将流收集到一个列表中。
用 Guava 的拆分器拆分字符串
以下示例使用 Google 的 Guava 库拆分字符串。 它使用Splitter类。
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0.1-jre</version></dependency>
我们需要包括 Guava 的依赖项。
SplitStringGuavaEx.java
package com.zetcode;import com.google.common.base.Splitter;public class SplitStringGuavaEx {public static void main(String[] args) {var input = " falcon, \t\tforest\t, \t\t, moderate, sky\n";var result = Splitter.on(',').trimResults().omitEmptyStrings().splitToList(input);result.forEach(System.out::println);}}
程序使用 Guava 的Splitter分割字符串。
var result = Splitter.on(',').trimResults().omitEmptyStrings().splitToList(input);
我们使用Splitter.on()从输入字符串中提取不重叠的子字符串。 trimResults()删除空格字符,omitEmptyStrings()删除潜在的空字符串。 结果将转换为列表。
在本教程中,我们展示了如何在 Java 中分割字符串。 您可能也对相关教程感兴趣: Java 文件教程, Java fibonacci 教程, Java 创建目录,用 Java 复制文件 , Java Unix 时间,用 Java 创建文件, Java StringBuilder教程和 Java 教程。
