为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 String Buffer 类 replace() 方法的情况下替换字符串中的字符?

如何在不使用 String Buffer 类 replace() 方法的情况下替换字符串中的字符?

宝慕林4294392 2023-03-17 14:08:14
我需要使用指定字符串片段中的字符替换此 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”类。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号