我有一个作业问题,需要使用正则表达式从字符串中删除每隔一个字符的内容。
其中一部分要求我删除索引为1、3、5...的字符。我已按以下方式完成:
String s = "1a2b3c4d5";
System.out.println(s.replaceAll("(.).", "$1"));
这将打印出12345
,这正是我想要的。本质上,我每次匹配两个字符,并用第一个字符替换掉它们。我使用了组捕获来实现这一点。
问题是,我在完成作业的第二部分时遇到了麻烦,需要删除索引为0、2、4、...的字符。
我已经做了以下操作:
String s = "1a2b3c4d5";
System.out.println(s.replaceAll(".(.)", "$1"));
这将打印出abcd5
,但正确的答案应该是abcd
。我的正则表达式只在输入字符串长度为奇数时才不正确。如果长度为偶数,则正则表达式可以正常工作。
我认为我离答案很接近,但不确定如何修复它。
System.out.println(s.replaceAll(".(.)?", "$1"));
(编辑:我讨厌自己是对的而不确定!) - Platinum Azure