java - 如何将字符串拆分为重叠的字符对

标签 java string split

我需要将一个字符串分成字符对,但字符对重叠。例如,我有一个字符串 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/

相关文章:

java - 错误: The system cannot find the file specified. Jenkins

java - Java中如何查找String常量池的内容?

java - 如何在 Java 中替换不区分大小写的文字子字符串

javascript - 按空格拆分字符串,除非空格位于最浅层的大括号或方括号内

java - 使用spring从java执行包含子句 "where col like N' myStr %' "的sql server查询

java - Hibernate 中来自服务器的重复 key 或完整性约束违规消息

Java Bukkit 从 InputStream 加载 .jar 文件

Java:你能在每次循环时改变同一个字符串的值吗?

string - 将字符串拆分为特定长度的组

php - 如果特定的正则表达式匹配则修改字符串