为了账号安全,请及时绑定邮箱和手机立即绑定

替换字符串的第 n 个字符但忽略空格的最佳方法?

替换字符串的第 n 个字符但忽略空格的最佳方法?

慕姐4208626 2021-10-28 17:08:32
我试图找出替换字符串的第 n 个字符但在循环时忽略空格的最佳方法。例如,如果我将 String 的每 5 个字符更改mary had a little lamb为z,它应该返回mary zad azlittze lazb我认为的一种方法是删除所有空格 ( maryhadalittlelamb),然后将所有第 5 个字符更改为z( maryzadazlittzelazb),然后引用原始字符串,找到的索引" "并将其插入maryzadazlittzelazb但这似乎不是很优雅,我相信有更好的方法可以做到这一点,有人可以建议吗?
查看完整描述

2 回答

?
牧羊人nacy

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';

    }

}


查看完整回答
反对 回复 2021-10-28
?
泛舟湖上清波郎朗

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()); 

}


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信