0

一連のchar値を持つencodedというchar配列があります。配列の中央に3文字を挿入し、残りの文字を次のスペースにプッシュして保持したいと思います。これは可能ですか?

次のように使用したコードの一部は、次の2つの文字も挿入して置き換えます。

    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 について話しているので、2 つの Java を必要とする特定の Unicodeコードポイントcharがあります。文字シーケンスを操作するときに高レベルの操作を使用する多くの理由の 1 つです。

于 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のようにサイズの char 配列を再定義しencoded.length+3、使用して要素をコピーしSystem.arraycopy(Object src,int srcPos, Object dest, int destPos, int length)、間に 3 つの文字を挿入する必要があります。

于 2012-11-24T05:15:05.613 に答える
0

charArray の代わりに String を使用すると、 replaceAllを使用できます。

于 2012-11-24T05:14:17.867 に答える