Java 将字符串拆分为重叠部分
我有这样的字符串:Java 将字符串拆分为重叠部分,java,regex,string,split,Java,Regex,String,Split,我有这样的字符串: String s = "1234567890"; 我想使用split(“regex”)获得以下输出: 12 23 34 45 56 67 78 89 90 我应该使用什么正则表达式?这不是用正则表达式解决的合适问题 当有一个更简单更容易的方法来解决问题时,最重要的是 更明显和自我记录方式 public static void main(final String[] args) { final String s = "1234567890"; for (in
String s = "1234567890";
我想使用split(“regex”)获得以下输出:
12
23
34
45
56
67
78
89
90
我应该使用什么正则表达式?这不是用正则表达式解决的合适问题
当有一个更简单更容易的方法来解决问题时,最重要的是
更明显和自我记录方式
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
publicstaticvoidmain(最终字符串[]args)
{
最终字符串s=“1234567890”;
对于(int i=0;i
有些人在遇到问题时会想 “我知道,我会使用正则表达式。”现在它们有两个问题。-杰米·扎温斯基 我同意,如果你不必使用正则表达式,还有其他简单的解决方案,那么就尽量避免使用正则表达式。但如果你不得不使用它,请阅读我其余的答案 不幸的是,您无法使用
split
,因为您希望在几个拆分部分中使用相同的数字,这是不可能的,因为split无法向数据中添加新内容
你可以用前瞻机制来做
String data = "1234567890";
Matcher m = Pattern.compile("(?=(\\d\\d))").matcher(data);
while (m.find())
System.out.println(m.group(1));
输出:
12
23
34
45
56
67
78
89
90
在循环中使用
子字符串(from,to)
而不是regex…有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题Jamie Zawinskiyou本可以很容易地修复一次性错误,并帮助所有人解决我可能遇到的问题。但是,正如我总是告诉那些代表性较低的用户的那样,应该在IDE中编写代码并粘贴到这里,以避免语法和其他明显的错误。这段代码可以很容易地运行并检查给定问题的正确性。为什么这不是一个用正则表达式解决的合适问题?你不解释原因,而且也不明显。。。至少对于Meth来说,答案是“当有一种更简单更容易的方法来解决问题时”。正则表达式是简单的“(?=(\\d{2})”,代码不再长。那么,它是如何变得更简单或更容易呢?我猜这似乎非常主观+1,将问题重命名为将字符串拆分为重叠部分
,这样就有更好的机会被找到。:)