我有一个名为 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;
}
}
}
任何方向都会受到高度赞赏。
答案 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。