将字符串拆分为重叠部分

Nyg*_*ger 2 java regex string split

我有这样的字符串:

String s = "1234567890";
Run Code Online (Sandbox Code Playgroud)

我想用split("regex")来获得这个输出:

12
23
34
45
56
67
78
89
90
Run Code Online (Sandbox Code Playgroud)

我应该使用什么正则表达式?

Psh*_*emo 11

我同意Jarrods的回答,如果您不必使用正则表达式,并且还有其他简单的解决方案,那么请尽量避免使用正则表达式.但是如果你必须使用它,请阅读我的其余答案......

不幸的是你无法做到这一点split,因为你想在少数分裂部分中使用相同的数字,这是不可能的,因为分裂不能为数据添加新的内容.

您可以使用前瞻机制来完成它

String data = "1234567890";
Matcher m = Pattern.compile("(?=(\\d\\d))").matcher(data);
while (m.find())
    System.out.println(m.group(1));
Run Code Online (Sandbox Code Playgroud)

输出:

12
23
34
45
56
67
78
89
90
Run Code Online (Sandbox Code Playgroud)


小智 10

使用正则表达式解决这个问题不是一个合适的问题

当有一种更简单,更简单的方法来解决问题时,最重要的是更明显和自我记录的方法来解决问题 .

public static void main(final String[] args)
{
    final String s = "1234567890";
    for (int i = 0; i < s.length() - 1; i++)
    {
        System.out.println(s.substring(i,i+2));
    }
}

12
23
34
45
56
67
78
89
90
Run Code Online (Sandbox Code Playgroud)

有些人在遇到问题时会想 "我知道,我会使用正则表达式." 现在他们有两个问题. - 杰米·扎温斯基

  • 正则表达式很简单"(?=(\\ d {2}))",代码不再长.那么它如何更简单或更容易?我想这似乎很主观 (3认同)