2 回答
TA贡献1862条经验 获得超7个赞
我会使用String.toCharArray(),然后用常规for循环进行迭代并测试每个字符是否不是空格Character.isWhitespace(char)。如果不是,则增加第二个计数器(此处命名为p)并检查该值是否可以被 5 整除。如果是这样,请将其设置为z。最后,String根据编辑的char[]. 喜欢,
String str = "mary had a little lamb";
char[] arr = str.toCharArray();
for (int i = 0, p = 0; i < arr.length; i++) {
if (!Character.isWhitespace(arr[i]) && ++p % 5 == 0) {
arr[i] = 'z';
}
}
System.out.println(new String(arr));
我得到(正如我在评论中提到的)
mary zad a lzttle zamb
另外,因为可能不是很清楚,所以if上面的复数等价于
if (!Character.isWhitespace(arr[i])) {
p++;
if (p % 5 == 0) {
arr[i] = 'z';
}
}
TA贡献1818条经验 获得超3个赞
为了完整起见,我的建议如下所示:
public static void main(String... args) {
Pattern p = Pattern.compile("((\\S\\s*){4})\\S");
Matcher m = p.matcher("mary had a little lamb");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "$1z");
}
m.appendTail(sb);
System.out.println(sb.toString());
}
添加回答
举报