用char数组中的一个字符替换两个字符

时间:2012-04-04 19:42:57

标签: java arrays replace char

如何用char数组中的一个字符替换两个字符?让我解释一下。我有一个长度为n的char数组。在这个char数组中,我想用指定索引i中的一个字符替换两个字符。在此过程中,阵列长度将减少1 我想到的想法是,首先创建一个长度为n-1的新char数组,然后将所有元素从索引0复制到索引ii除外)然后在索引i处插入所需字符,然后将索引i+2i包括)中的元素复制到索引n-1。但是这个过程需要两次for循环。有没有更好的方法可以以有效的方式做同样的事情。

4 个答案:

答案 0 :(得分:5)

或者更有效的方法是使用StringBuilder,它是char []的包装器,让它为你做。

char[] chars = "Hello".toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(chars);
sb.replace(2, 4, "L");
System.out.println(sb);

打印

HeLo

您可以查看替换代码,看看它是如何做到的。

答案 1 :(得分:4)

使用System.arraycopy()复制数组部分,而不是迭代其元素。

答案 2 :(得分:2)

鉴于你想要一个新的数组对象,没有比复制每个数组元素更快的方法了,所以没有比这更有效的方法。如果您使用两次System.arraycopy()调用,则不必自行编写循环。

如果你不需要一个新的数组对象,你可以将较高编号的数组元素向下移动一个,这只占副本数量的一半 - 但是你需要跟踪其他方式的长度。

答案 3 :(得分:-1)

它可以使用单个for循环。只需输入一个IF语句,指示迭代(i)=您想要替换的索引然后执行不同的操作而不是仅复制。

写在基本:

For i = 0 to n - 1
       If i = x then
             arrayCopy(i) = replaceChars
       Else
             arrayCopy(i) = arraySource(i)
       End If
Next