大家好,我是指北君。
我们写代码的时候,经常会遇到这样一个场景,那就是分割字符串。 比如说把一个字符串分成N个,或者说按照N个字符分割。
我们今天就来看看怎么每隔N个字符分割字符串。首先我们就使用 JDK 中内置的 String#split
来分割。
使用 String#split
方法
String类中 split 方法,是我们平常处理字符串分割最常用的方法之一,它可以根据给定的分隔符或正则表达式将一个字符串分割成多个部分。
我们来看个例子:
1 |
|
我们通过使用正则表达式 "(?<=\\G.{" + n + "})"
来分割字符串,其中表达式中的 n 表示字符的长度。
我们可以通过以下测试用例代码验证这个正则是否有效。
1 |
|
使用 String#substring
方法
String#substring
一般情况我们都是用于截取字符串使用的,这里我们也是可以用来处理字符串的分割,只要循环就行。
1 |
|
我们通过以下测试用例代码来验证。
1 |
|
使用 Pattern
类
Pattern 类通常来说,我们是用于处理正则表达式,做一些match使用,正如第一种 String#split
方法所见,正则表达式也可以用于分割字符串。这里就展示以下,使用Pattern类来处理字符串分割。
1 |
|
我们使用 .{1,n}
构建了一个 Pattern
对象,它能个匹配 1 到 n 个字符, 使用下面的测试永烈简单测试以下
1 |
|
使用 Guava
到现在为止,我们已经学了几种通过 JDK 相关 API 完成这个操作,下面我们来看看怎么使用 Guava 来实现这个小功能。
1 |
|
Guava 通过 Splitter 类可以很简单的针对我们的这个使用场景,进行字符串分割。这个 fixedLength()
方法为后续的分割提供了固定的分割长度。
我们通过下面的测试来测试以下。
1 |
|
总结
字符串分割在我们工作中很常用,但大部分情况我们只会使用 String#split
, 看到其他的一些情况,是不是感觉有点有趣,没想到字符串分割还能这样玩。