[toc]

1、String#split

可以根据给定的分隔符或正则表达式将一个字符串分割成多个部分
// 使用正则表达式 "(?<=\\G.{" + n + "})"来分割字符串,其中表达式中的 n 表示字符的长度。
public static List<String> usingSplitMethod(String text, int n) {
    String[] results = text.split("(?<=\\G.{" + n + "})");

    return Arrays.asList(results);
}

2、String#substring

一般情况我们都是用于截取字符串使用的,这里我们也是可以用来处理字符串的分割,只要循环就行
public static List<String> usingSubstringMethod(String text, int n) {
    List<String> results = new ArrayList<>();
    int length = text.length();

    for (int i = 0; i < length; i += n) {
        results.add(text.substring(i, Math.min(length, i + n)));
    }

    return results;
}

3、Pattern类

Pattern 类通常来说,我们是用于处理正则表达式,做一些match使用,正如第一种 String#split 方法所见,正则表达式也可以用于分割字符串
// 我们使用 .{1,n}构建了一个 Pattern 对象,它能个匹配 1 到 n 个字符
public static List<String> usingPattern(String text, int n) {
    return Pattern.compile(".{1," + n + "}")
        .matcher(text)
        .results()
        .map(MatchResult::group)
        .collect(Collectors.toList());
}

4、Guava类

以上三种方法是Jdk 中的 API,Guava 是第三方依赖包所提供的
Guava 通过 Splitter 类可以很简单的针对我们的这个使用场景,进行字符串分割。这个 fixedLength() 方法为后续的分割提供了固定的分割长度。
public static List<String> usingGuava(String text, int n) {
    Iterable<String> parts = Splitter.fixedLength(n).split(text);

    return ImmutableList.copyOf(parts);
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐