首页 > 解决方案 > 替换字符串的第 n 个字符但忽略空格的最佳方法?

问题描述

我试图找出替换字符串的第 n 个字符但在循环时忽略空格的最佳方法。例如,如果我要将字符串的每 5 个字符更改mary had a little lambz,它应该返回mary zad azlittze lazb

我认为的一种方法是删除所有空格(maryhadalittlelamb),然后将所有第 5 个字符更改为zmaryzadazlittzelazb),然后引用原始字符串,找到索引" "并将其插入maryzadazlittzelazb

但这似乎不太优雅,我相信有更好的方法可以做到这一点,有人可以建议吗?

谢谢!

标签: javastring

解决方案


我会使用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';
    }
}

推荐阅读