我需要将一个字符串分成字符对,但字符对重叠。例如,我有一个字符串 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]
谁能帮帮我?
最佳答案
split
只是搜索要拆分的位置,它不能向结果添加任何新内容。换句话说,你不能 split
"abc"` -> "ab", "bc"
因为 b
只能是一个结果的一部分。
你可以做的是使用 Pattern
/Matcher
组合,它将一次查找
并消耗一个字符,并将存储在第二个地方一个不消耗它(所以我们在这里需要一些 zero-length 技术,如 look-around mechanism )。我在想类似的东西
Pattern p = Pattern.compile(".(?=(.))");
Matcher m = p.matcher(yourString);
while(m.find()){
System.out.println(m.group() + m.group(1));
}
您也可以简单地使用 substring(startIncluding, endExcluding)
String data = "Testing";
for (int i=0; i<data.length()-1; i++){
System.out.println(data.substring(i,i+2));
}
或使用charAt(index)
String data = "Testing";
for (int i = 0; i < data.length() - 1;) {
System.out.append(data.charAt(i++)).println(data.charAt(i));
}
关于java - 如何将字符串拆分为重叠的字符对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213333/