我需要使用指定字符串片段中的字符替换此 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);}}
1 回答

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
对于采用任何字符串并进行替换的独立方法,这将是最简单的。
public static String replace(String orig, int start, int end, String replace) {
String front = orig.substring(0,start);
String back = orig.substring(end);
return front + replace + back;
}
我故意省略了使用StringBuilder. 这应该很容易适应本土的“String”类。
添加回答
举报
0/150
提交
取消