Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串拆分为重叠的字符对_Java_String_Split - Fatal编程技术网

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

Java 如何将字符串拆分为重叠的字符对,java,string,split,Java,String,Split,我需要将一个字符串拆分为两个字符对,但这两个字符对重叠。例如,我有一个字符串正在测试,我想要输出: [Te, es, st, ti, in, ng] 我尝试了一些使用String.split的方法,但没有得到正确的输出: String s = "Testing"; System.out.println(java.util.Arrays.toString(s.split("(?<=\\G..)"))); 有人能帮我吗?split只需搜索要拆分的位置,它无法向结果添加任何新内容。换句话说,

我需要将一个字符串拆分为两个字符对,但这两个字符对重叠。例如,我有一个字符串
正在测试
,我想要输出:

[Te, es, st, ti, in, ng]
我尝试了一些使用
String.split
的方法,但没有得到正确的输出:

String s = "Testing";
System.out.println(java.util.Arrays.toString(s.split("(?<=\\G..)")));

有人能帮我吗?

split
只需搜索要拆分的位置,它无法向结果添加任何新内容。换句话说,你不能像这样分裂

"abc"` -> "ab", "bc"
因为
b
只能是一个结果的一部分

您可以使用
模式
/
匹配器
组合,该组合将
查找
并一次使用一个字符,并将第二个字符存储在某个位置而不使用它(因此我们需要类似的技术)。我在想类似的事情

Pattern p = Pattern.compile(".(?=(.))");
Matcher m = p.matcher(yourString);
while(m.find()){
    System.out.println(m.group() + m.group(1));
}
您也可以简单地使用
子字符串(startIncluding,endExcluding)

如上所述,拆分会消耗输入,因此您无法在拆分的两部分中从输入中获取给定字符

但是,这里有一个完成工作的单行解决方案:

Arrays.stream(s.split("")).reduce((a, b) -> {System.out.println(a + b); return b;});

只需在循环中执行
substring()
。检查此处[谢谢Flip Bulovic,但我得到了下面的Criteria wiss解决方案answer@FilipBulovic.谢谢你给我的礼物solution@Sanket990我希望能给你更多的解释,而不是解决方案。如果我的答案有一部分不清楚,请随意询问。否则我的答案可能对你来说毫无意义。我正在运行你的日志ic代码和我的标准明智地说,这个答案已经填好了,我已经知道了你的答案。tnxIt并不是说我关心UPVOUTS。它更像是我想知道你是否能够轻松理解我的答案。如果有什么不清楚的,请随时问。是的,我明白了你的逻辑,我很容易理解。谢谢。完美的解决方案
String data = "Testing";
for (int i=0; i<data.length()-1; i++){
    System.out.println(data.substring(i,i+2));
}
String data = "Testing";
for (int i = 0; i < data.length() - 1;) {
    System.out.append(data.charAt(i++)).println(data.charAt(i));
}
Arrays.stream(s.split("")).reduce((a, b) -> {System.out.println(a + b); return b;});