java - 替换字符串的第 n 个字符但忽略空格的最佳方法?
问题描述
我试图找出替换字符串的第 n 个字符但在循环时忽略空格的最佳方法。例如,如果我要将字符串的每 5 个字符更改mary had a little lamb
为z
,它应该返回mary zad azlittze lazb
我认为的一种方法是删除所有空格(maryhadalittlelamb
),然后将所有第 5 个字符更改为z
(maryzadazlittzelazb
),然后引用原始字符串,找到索引" "
并将其插入maryzadazlittzelazb
但这似乎不太优雅,我相信有更好的方法可以做到这一点,有人可以建议吗?
谢谢!
解决方案
我会使用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';
}
}
推荐阅读
- r - 如何将日期和时间从 UTC 转换为 R 中的本地时间?
- c# - 客户端发送证书但 GetClientCertificate 始终接收为 null
- google-chrome - Google 表格调试无休止的计算和缓慢的加载时间(Chrome 开发工具)
- javascript - 在 Uglify TypeError 之后:无法读取未定义的属性“种类”
- javascript - 如何在 JavaScript 中编写 Python 嵌套的“for”循环
- python - 如何在每个新行中打印两个列表?
- flutter - 在颤振中使用日期选择器设置开始和结束日期
- freepascal - 对象帕斯卡。将文本文件读入 WideChar 变量
- angular - 在 Angular 中添加 @uirouter/angular-hybrid 时出错
- javascript - React Native - 在接收本地推送通知时清除以前的推送通知