java如何将字符串拆分为重叠的字符对
我需要将一个字符串拆分为两个字符对,但这两个字符对重叠。例如,我有一个字符串Testing
,我想要输出:
[Te, es, st, ti, in, ng]
我用String.split
尝试了一些东西,但没有得到正确的输出:
String s = "Testing";
System.out.println(java.util.Arrays.toString(s.split("(?<=\\G..)")));
这给了我:
[Te, st, in, g]
有人能帮我吗
# 1 楼答案
split
只需搜索要拆分的位置,它无法向结果中添加任何新内容。换句话说,你不能像这样分裂因为
b
只能是一个结果的一部分您可以使用
Pattern
/Matcher
组合,它将find
一次使用一个字符,并将第二个字符存储在某个地方而不使用它(因此我们需要一些zero-length技术,如look-around mechanism)。我在想类似的事情您也可以简单地使用
substring(startIncluding, endExcluding)
或者使用
charAt(index)
# 2 楼答案
正如@pshemo's answer所说,拆分会消耗输入,因此无法在拆分的两部分中从输入中获取给定字符
但是,这里有一个完成工作的单行解决方案: