自定义实现replaceAll功能,不使用replace

	@Test
	public void go(){
		String str = "abmecdme";
		
		String oldRP = "c" , newRP ="abc";
				
		int forward = 0;  // 源串中,forward 查找下一个oldRP位置
		int follow = 0;   // 源串中,follow  记录forward的上一个位置[follow ,forward]为不需要被替换的部分
		StringBuilder sb = new StringBuilder();
		
		while(forward!=-1 && forward<=str.length()){		
			
			if((forward = str.indexOf(oldRP, forward))!=-1){	 // 【源字符串】,某位置还能找到 【替换串】
				sb.append(str.substring(follow,forward)); //[follow,forward]为不需要被替换的部分
				sb.append(newRP);           //需要被替换的部分
				forward += oldRP.length();  //跳到新大陆开始寻找
				follow = forward;			//重合 follow 与 forward	
			}else { // 不用替换了,追加剩余
				sb.append(str.substring(follow));
			}

		}
		
		System.out.println(sb);									
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值