我目前正在为一个类创建一个项目来创建一个TextLine类,该类表示必须表示为字符数组的一行文本。
对于其中一个方法,我应该将一个字符串作为参数的参数,然后将该字符串附加到我已经创建的char数组中。
我试图在网上搜索我是如何做到这一点的,甚至是一个显示实现的String或StringBuffer类的例子,但由于我在谷歌的新手技能,我找不到任何有用的东西。< / p>
我在想的是我首先必须将字符串转换为数组,然后以某种方式使用其中一个数组方法将每个字符分别添加到char数组中。
这就是我所拥有的:
public void append(String fragment){
char[] temp = fragment.toCharArray();
}
我不太确定可以使用什么数组方法,如果有的话。有人可以帮助我吗?
答案 0 :(得分:2)
假设您的原始char[]
数组名为arr
。然后你可以这样做:
public void append(String fragment){
arr = (new String(arr)+fragment).toCharArray();
}
这会将您的char[]
数组转换为String
,因此您只需使用fragment
运算符将其连接到+
即可。然后,您只需使用String
将新的char[]
转换回toCharArray()
数组。
答案 1 :(得分:2)
通常您会使用StringBuilder
作为您班级的内部存储空间,但我认为您需要有关如何执行此操作的基本详细信息。
基本过程是这样的:
以下是代码(假设data
成员的声明如下:char[] data = new char[0]
:
public void append(String fragment) {
char[] fragmentChars = fragment.toCharArray();
char[] newData = new char[data.length + fragmentChars.length];
System.arraycopy(data, 0, newData, 0, data.length);
System.arraycopy(fragmentChars, 0, newData, data.length, fragmentChars.length);
data = newData;
}
答案 2 :(得分:1)
您可以使用System.arraycopy方法将一个数组的内容复制到另一个数组中。我会把它留作练习来弄清楚细节。
答案 3 :(得分:0)
作为替代方案,您可以尝试稍微简单的方法:
public class Test{
char[] arr;
public static void main(String[] args){
Test t = new Test();
t.arr = "hi ".toCharArray();
t.append(" and bye");
System.out.print(new String(t.arr));
}
public void append(String myString){
char[] toAppend = myString.toCharArray();
char[] newArr = new char[toAppend.length+arr.length];
for(int i = 0; i < arr.length; i++)
newArr[i] = arr[i];
for(int i = 0; i < toAppend.length-1; i++)
newArr[i+arr.length] = toAppend[i];
arr = newArr;
}
}