我需要使用指定字符串片段中的字符替换此 TextLine 中开始(包括)和结束(不包括,即索引 end-1 之前的字符将被替换)之间的字符的替换方法。我不能直接或间接使用 StringBuffer 类的 replace(int start, int end, String fragment) 方法。我正在尝试制作 eLine.replace(0, 3, "abc"); 或者 eLine.replace(0, 3, "abc"); 工作。
我试着做了一个类似StringBuffer Class的replace方法,但是没有成功。我想不出另一种方法来进行这样的替换,这就是我被卡住的原因。如果有其他方法,请给我一个示例或解决方案。
public int length;
public char[] characters;
public class TextLineTester {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a line of text.");
String text = input.nextLine();
EditableTextLine eLine = new EditableTextLine(text);
Scanner strCharsInput = new Scanner(System.in);
System.out.println("Enter string of characters.");
String str = strCharsInput.nextLine();
eLine.replace(0, 3, "abc");
eline.replace(0, str.length(), "abc"); // suppose to replace all occurrences of string eLine with the string ”abc”and print the modified eLine
System.out.println(eLine.toString());
}
}
public void replace(int start, int end, String fragment) {
if (end > length) {
end = length;
}
int fragmentLength = fragment.length();
int newLength = length + fragmentLength - (end - start);
ensureCapacityInternal(newLength);
System.arraycopy(characters, end, characters, start +
fragmentLength, length - end);
fragment.getChars(0,0, characters, start);
length = newLength;
}
public EditableTextLine(String line) { // creates EditableTextLine object
length = line.length();
characters = new char[DEFAULT_SIZE * 2];
characters = line.toCharArray();
}
public String toString() {
return "Characters: " + new String(characters);
}
}
拉莫斯之舞
相关分类