0

我有一个名为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;
            }
        }
    }

任何方向将不胜感激。

4

3 回答 3

4

几点。

首先,Java 的数组是一种比较低级的数据结构。它们不支持插入等。它们不会动态增长。

在您的情况下,您可以手动将字符移动n,但仅当原始数组具有额外n的容量插槽时,这才是无损的。

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

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

于 2012-11-24T05:19:56.257 回答
1

您应该将剩余的字符向右推 3 个位置(如果溢出,那么您将从 end 松开 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(以零售所有旧字符),那么您需要重新定义大小为 as 的 char 数组encoded.length+3并使用复制元素System.arraycopy(Object src,int srcPos, Object dest, int destPos, int length),然后在其间插入三个字符。

于 2012-11-24T05:15:05.613 回答
0

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

于 2012-11-24T05:14:17.867 回答