【发布时间】:2013-11-22 20:16:34
【问题描述】:
由于字符串是不可变的,我正在尝试重新创建它。 我需要替换其中一个字母。
for (int i = 0; i < mat.length(); i++){
//there's more stuff here, but that'd require a lot more explaining
//the following don't occur at every iteration
//mat and s are always the same length though
if (i == s.length())
mat = mat.substring(0, i) + s.charAt(i);
else
mat = mat.substring(0, i) + s.charAt(i) + mat.substring(i + 1, mat.length());
}
基本上用相同索引处的 String s 的字母来改变 String mat 的字母。 问题是如果它是最后一个索引,我会得到一个越界错误,所以我选择使用 if/else 来解决这个问题。
但存在冗余,因为这两个条件都运行代码:
mat = mat.substring(0, i) + s.charAt(i)
消除这种冗余的最佳方法是什么? 谢谢!
【问题讨论】:
-
你在增加 i 吗?此外,如果您使用 StringBuilder 来代替,因为您创建了太多的字符串,这将是有效的。
-
if (i == s.length())然后你就完成了——你已经遍历了字符串的所有字符。 -
我不认为我可以使用 StringBuilder 哈哈,它是用于学校的。还有马特,但我可能需要更改最后一个字符?
-
如果
if (i == s.length())评估为真,您的代码将失败。如果i是字符串长度,那么随后的s.charAt(i)将产生IndexOutOfBounds错误。 -
这个问题的标题和代码示例很不清楚。请提供所需输入和输出的示例。
标签: java string char substring redundancy