将字符插入数组的中间

时间:2012-11-24 05:06:35

标签: java arrays

我有一个名为 encoded 的char数组,它有一系列char值。我想在数组的中间插入3个字符,并通过将它们推送到下一个空格来保留剩余的字符。这可能吗?

我以下使用的代码部分只是插入并替换了接下来的两个字符。

    encoded = new char[20];
    encoded = encodeArray.toCharArray();
    for (int x = 0; x < encoded.length; x++) {
        if (encoded[x] == a) {
            encoded[x] = amp;
        } if (encoded[x] == und) {
            for (int y = 0; y < 3; y++) { 
                encoded[x+y] = tilde;
            }
        }
    }

任何方向都会受到高度赞赏。

3 个答案:

答案 0 :(得分:3)

有几点。

首先,Java的数组结构相对较低。它们不支持插入等。它们不会动态增长。

在您的情况下,您可以手动将字符移动n,但只有当原始数组具有额外的n容量插槽时才会丢失。

要操作字符数组,请查看java.lang.StringBuilder

最后,既然我们在谈论Java,那么某些Unicode 代码点需要两个Java char。操作字符序列时使用更高级别操作的众多原因之一。

答案 1 :(得分:1)

你应该将剩下​​的字符推到3个位置(如果溢出,那么你将从结尾中删除3个字符),如下所示:

   if (encoded[x] == und) {
        //move the chars 3 places right first
        for (int z = encoded.length-4; z > x; z--) { 
            encoded[z+3] = encoded[z];
        }
        //then fill the 3 places as you want
        for (int y = 0; y < 3 && x+y < encoded.length; y++) { 
            encoded[x+y] = tilde;
        }
    }

如果要将char数组的长度增加3(以零售所有旧字符),则需要重新定义大小为encoded.length+3的char数组,并使用{{复制元素1}}然后在其间插入三个字符。

答案 2 :(得分:0)

使用String而不是charArray将允许您使用replaceAll